Domanda

Sto lavorando con un database SQL Server con oltre 1000 tabelle, altre centinaia di visualizzazioni e diverse migliaia di procedure memorizzate. Stiamo cercando di iniziare a utilizzare Entity Framework per i nostri nuovi progetti e stiamo lavorando alla nostra strategia per farlo. La cosa su cui sono appeso è il modo migliore di dividere le tabelle in diversi modelli (EDMX o DBContext se andiamo prima code). Posso pensare ad alcune strategie subito fuori:

  • Diviso dallo schema
    Abbiamo i nostri tavoli divisi in una dozzina di schemi. Potremmo fare un modello per schema. Questo non è perfetto, tuttavia, perché DBO finisce ancora per essere molto grandi, con oltre 500 tavoli / viste. Un altro problema è che alcune unità di lavoro finiranno per dover fare transazioni che abbracciano più modelli, il che si aggiunge alla complessità, anche se presumo che EF lo rende abbastanza semplice.
  • Diviso per intento
    Invece di preoccuparsi degli schemi, dividi i modelli per intenti. Quindi avremo modelli diversi per ogni applicazione, progetto, modulo o schermo, a seconda di quanto vogliamo granulare. Il problema che vedo con questo è che ci sono alcune tabelle che inevitabilmente devono essere utilizzate in ogni caso, come l'utente o l'auditistoria. Aggiungiamo quelli a tutti i modelli (violano a asciugatura credo) o quelli in un modello separato che viene utilizzato da ogni progetto?
  • Non dividere affatto - un modello gigante
    Questo è ovviamente semplice dal punto di vista dello sviluppo, ma dalla mia ricerca e dalla mia intuizione sembra che possa funzionare terribilmente, sia al momento della progettazione, al tempo di compilazione e possibilmente al tempo di esecuzione.

Qual è la migliore pratica per l'utilizzo di EF contro un database così grande? In particolare quali strategie usano le persone nella progettazione di modelli da questo volume di oggetti DB? Ci sono opzioni che non sto pensando a quel lavoro meglio di quello che ho sopra?

Inoltre, è un problema in altri ormi come Nhibernate? In tal caso, hanno escogitato soluzioni migliori di EF?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top