entità Entity Framework (insieme con il quadro) sono la parte dati. In molte applicazioni entrano anche a far parte del tuo livello aziendale ed è discutibile se questo sia o meno valido (personalmente non mi piace, ma quando lo si riassume con il modello del repository c'è una buona argomentazione che stai perdendo alcuni dei benefici forniti da EF).
A seconda del modo in cui si separa il codice (e sembra che si stia utilizzando il modello di repository) si può avere un repository contenente alcune logiche di business o anche un livello di servizi (la mia preferenza per le applicazioni a 3 livelli) dove la logica aziendale (principalmente) accade.
Direi che dovresti considerare View Models e parte del tuo modello di presentazione, ma se utilizzi MVC e annotazioni di dati (che sono eccellenti per questo lavoro) per convalidare il tuo modello hai appena accumulato un un mucchio di logica aziendale in loro.
Il punto più importante per impedire che la logica aziendale si insinui è il livello di presentazione e, soprattutto, le visualizzazioni e i controller. L'approccio al modo in cui strutturate il resto dell'applicazione dipende in gran parte dal framework scelto, dalla scala dell'applicazione e dalla struttura di distribuzione dell'applicazione.
Quindi, per essere il più chiaro possibile questo è quello che faccio *:
Visualizzazioni < --Presentation strato solo
Controller < --Presentation strato unico (potrebbe finire in alcuni casi con controller leggermente "grasso", ad es. login .NET Membership)
Visualizza Modelli < - Livello di presentazione, ma se si fanno le convalide qui spesso vengono testate anche le regole aziendali.
Servizio strato < --Business strato strato se utilizzati
Repositories < --Could essere dati soltanto, o mix di livello di business. Se fate il modello repository cercare di evitare di esporre le vostre DbSets direttamente, in quanto questo sconfigge subito l'astrazione che si sta tentando di fornire (potenziali eccezioni a questo, ad esempio - Net Membership)
Enti < strato --data, possibilmente con una logica di business in base alla struttura della tua applicazione.
* non deve essere preso come autorevoli
Cosa intendi per "dividerli in livelli?" – user1477388
I modelli e le entità hanno diversi punti di vista. Entità (Classi di dominio) sono il modo in cui il livello dati e il livello aziendale utilizzano i dati. I modelli sono come la presentazione (vista) utilizza i dati. Utilizzare uno strumento come AutoMapper per trasporre nel controller. – Brian
Le entità di dominio dovrebbero risiedere in BL o DL? Grazie! –