Sto cercando di essere uno sviluppatore migliore ...separazione degli interessi Pattern Repository & Entity Framework 3.5
quello che sto lavorando con:
- .Net MVC Framework 1.0
- Entity Framework 3,5
ho fatto qualche lettura e penso che quello che voglio fare è:
- Creare un repository per ciascun aggregato nel dominio. Un repository di ordini, ad esempio, gestirà gli OrderItem di un ordine.
- Creare un livello di servizio per gestire la business logic. Ogni repository avrà un oggetto di servizio corrispondente con metodi simili.
- Creare DTO tra il repository e il servizio
- Possibilmente creare ViewModels che sono classi da utilizzare per la visualizzazione.
Ho un repository un'interfaccia base che le mie interfacce repository aggregati attueranno ...
public interface IRepository<T>
{
IEnumerable<T> ListAll();
T GetById(int id);
bool Add(T entity);
bool Remove(T entity);
}
mio Ordine interfaccia Repository è definito come segue ... ci saranno probabilmente altri metodi, come ho più in questo esercizio di apprendimento.
public interface IOrderRepository : IRepository<Order>
{
}
Le mie classi di servizio sono essenzialmente definite come i repository, tranne per il fatto che ogni implementazione di servizio include la logica di business. I servizi avranno un'interfaccia repository nel costruttore (non sono pronto per IoC in questo esercizio, ma credo che sia dove vorrei finire in fondo alla strada).
- Le implementazioni del repository eseguiranno il push e il pull dal database utilizzando Entity Framework. Quando si recuperano dati; i metodi restituiranno solo i DTO e non gli oggetti EF generati
- I servizi (come li chiamo loro) controlleranno il repository ed eseguiranno la logica di business. I servizi sono ciò che vedrai nel controller, ad esempio _orderService.GetById (1).
- Questo è il punto in cui ho iniziato a capovolgere e potrei usare qualche feedback ... dovrei forse avere le mie classi di servizio per popolare classi ViewModel ... non dovrei avere classi ViewModel .... forse è troppa mappatura da un tipo ad un altro?
Mi piacerebbe avere un riscontro sulla direzione che sto seguendo per quanto riguarda la separazione delle preoccupazioni.
Grazie
Ho cercato di fare lo stesso, ma non riesco a pensare a un buon modo per gestire il metodo di inclusione di EF? –
P.S. Sei sicuro di voler dire EF 3.5? Penso che la versione 1 sia la versione corrente e la versione 2 sia in versione beta. Oppure, sto usando una versione v vecchia di esso. –
EF 3.5 = versione 1, EF 4.0 = versione 2 – bobwah