Entity Framework e 3 layer

giovedì 06 febbraio 2014 - 21.25

Bobo72 Profilo | Newbie

Ciao a tutti,

ho una dll (Data) dove, tramite EF, vengono create le classi DataModel.Context.cs e DataModell.tt. del mio database di prova.

Dalla (Business) aggiungo il riferimento a (Data) e quando utilizzo la proprieta creata da EF (DbSet<Clienti> Clientis) della context, non mi visualizza i metodi a meno che aggiungo il pacchetto NuGet di EF.

Potete aiutarmi magari con un piccolissimo esempio..!

Grazie...

0v3rCl0ck Profilo | Guru

Ciao, se cerchi di accedere a particolari istruzioni di EF è normale che tu debba includere EF nel progetto di business... Ma dovresti utilizzare semplicemente codice linq to entity per accedere ai dati su dbset.

Per quanto riguardo il data access layer, EF può essere visto proprio come livello dati e a volte non è necessario aggiungere altro, in base anche alle tue necessità in realtà, e quindi puoi passare direttamente il dbcontext o dbset alle classi di business che poi con linq to entity eseguono le query necessarie, oppure puoi implementare un Repository pattern per aggiungere un livello di mezzo tra EF e business, e che può servire molto per potere fare unit test su business isolati dall'accesso hai dati.

Prova a vedere qualche tutorial su EF e ti suggerisco quello denominato code-first che ti spinge a scrivere un data access layer basato sulla scrittura del modello dati tramite classi dette POCO e cioè semplici classi contenenti solo proprietà e relazioni tra entità:

http://msdn.microsoft.com/it-it/data/jj193542

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application


Dopo che hai provato a seguire i tutorial, se hai ancora dubbi chiedi pure

Edit: qualche link sul Repository pattern

http://msdn.microsoft.com/en-us/library/ff649690.aspx
http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
http://www.codeproject.com/Articles/688929/Repository-Pattern-and-Unit-of


Ciao,
Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic

Bobo72 Profilo | Newbie

Ciao Michael,

ho visto i tutorial e fatto varie prove ma (dalla business) non riesco ad accedere al data layer utilizzando linq to entity senza referenziare EF.
Ti allego una piccola prova fatta su un unico progetto e fin qui tutto ok, il problema e capire come strutturare i layer per separare il tutto.

Grazie...
Roberto.

0v3rCl0ck Profilo | Guru

Ho dato un occhio al progetto, e mi sembra ok, ho spostato un po' di classi in vari progetti (Data, Business e Model), e ho notato che effettivamente per lo meno devi referenziare l'entity framework sull'applicazione, ma per il semplice fatto che si deve portare dietro delle dll che altrimenti non si porta dietro da solo dal Data. Ad ogni modo l'errore che ricevevi tu, non c'è più, il business referenzia soltanto Data e Model (senza EF).

Ti ho riallegato il progetto vs2013.

Se proprio non vuoi referenziare EF dall'applicazione, devi però fare in modo di copiarci le dll che richiede con uno script post-build, ma non trovo quale sia il problema di referenziare le dll, dato che ad ogni modo tali dll devono essere obbligatoriamente presenti per fare girare l'applicazione correttamente.


Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5