12

Consente di considerare ASP.NET MVC struttura di cartella dell'applicazione predefinita, quindi è assomiglia a questo:Dove collocare Entity Framework Data Model nell'applicazione MVC?

-App_data 
-Content 
-Controllers 
    HomeController.cs 
-Models 
    AccountModels.cs 
-Scripts 
-Views 

La mia domanda è: Dove è il posto migliore per mettere Entity Framework Modello dati del file (EDMX)? È la cartella Modelli? Sì. Sappiamo che una buona soluzione è introdurre un nuovo progetto e riferirlo all'applicazione MVC, ma dimenticarlo ora.

+1

** PERCHE '** vuoi escludere la soluzione corretta in anticipo - di mettere tutta questa roba in un assieme separato ?? È l'approccio migliore e più pulito - ** usalo! ** –

risposta

17

Per un piccolo progetto, dovrebbe essere parte del Modello. Per un prodotto più grande, il repository e il modello associato potrebbero essere in un assembly separato.

6

Beh, questo è discutibile, ma voterei +1 per la cartella Modelli.

L'unico altro candidato sarebbe App_Data, ma questo è generalmente per i database basati su file (SQL Server CE.

Come l'EDMX è un un'astrazione del database, dovrebbe entrare nei Models cartella.

Se il progetto si ingrandisce, è necessario spostare definitivamente il modello EF in un altro progetto. A prova di futuro, fai in modo che i tuoi controllori accedano a EDMX tramite Repository/Interfaces, quindi quando sposti il ​​DAL su un altro progetto, tutto ciò che dovrai fare è aggiungere il riferimento e aggiungere le istruzioni using.

0

La mia opinione è che si dovrebbe creare

  1. un progetto separato per gli oggetti di dominio, datacontracts ecc ecc ... Come MyProject.Infrastructure tra cui molte cartelle come DataContracts, Modello, eccezioni ecc
  2. un progetto separato per DataAccess wich contiene i DBContexts ei Repository, in questo modo è possibile gestire facilmente le migrazioni in seguito
+0

Sono davvero necessari due progetti separati? Perché non aggiungere classi di dominio e classi di accesso ai dati in un unico progetto. Se si hanno molti diversi archivi di dati di backend, è possibile che alcuni progetti non relazionali e distinti per le classi di dominio e l'accesso ai dati abbiano un senso. –

1

avrei messo il modello EF (modello aka fisico) al modi nel proprio assembly o in un assembly "principale" esterno all'applicazione MVC principale. Lo stesso vale per i tuoi servizi di business logic/dominio-logico/dominio/ecc. Separa i contenuti non Web dall'applicazione MVC-Web.

Questo ti aiuterà a riutilizzare la parte principale della tua app. Ad esempio quando è necessario esporlo come servizio, uno strumento da riga di comando, strumento di migrazione, ecc.

Perché archiviarlo nel proprio assieme è così semplice e richiede alcuni minuti. Consiglio vivamente di farlo per anche ogni piccola app.

Problemi correlati