Condividi tramite


Creazione di un modello

Un modello EF memorizza i dettagli sul mapping delle classi e delle proprietà dell'applicazione alle tabelle e alle colonne del database. Esistono due modi principali per creare un modello di Entity Framework:

  • Uso di Code First: lo sviluppatore scrive il codice per specificare il modello. Ef genera i modelli e i mapping in fase di esecuzione in base alle classi di entità e alla configurazione del modello aggiuntiva fornita dallo sviluppatore.

  • Uso di EF Designer: lo sviluppatore disegna caselle e linee per specificare il modello tramite Ef Designer. Il modello risultante viene archiviato come XML in un file con estensione EDMX. Gli oggetti di dominio dell'applicazione vengono in genere generati automaticamente dal modello concettuale.

Flussi di lavoro di Entity Framework

Entrambi questi approcci possono essere usati per impostare come destinazione un database esistente o creare un nuovo database, con conseguente 4 flussi di lavoro diversi. Scopri qual è la soluzione migliore per te:

Voglio solo scrivere codice... Voglio usare un designer...
Si sta creando un nuovo database Usare Code First per definire il modello nel codice e quindi generare un database. Usare Model First per definire il modello usando caselle e linee e quindi generare un database.
È necessario accedere a un database esistente Usare Code First per creare un modello basato su codice mappato a un database esistente. Utilizzare Database First per creare un modello di caselle e linee mappato a un database esistente.

Guardare il video: Quale flusso di lavoro ef è necessario usare?

Questo breve video illustra le differenze e come trovare quello più adatto a te.

Presentato da: Rowan Miller

Anteprima Flusso di lavoro Miniatura WMV | MP4 | WMV (ZIP)

Se dopo aver guardato il video non ti senti ancora a tuo agio decidere se vuoi usare EF Designer o Code First, impara entrambi.

Un'occhiata sotto il cappuccio

Indipendentemente dal fatto che si usi Code First o Ef Designer, un modello di Entity Framework include sempre diversi componenti:

  • Oggetti di dominio o tipi di entità dell'applicazione stessi. Questo viene spesso definito come il livello oggetto

  • Modello concettuale costituito da tipi di entità e relazioni specifici del dominio, descritti usando Entity Data Model. Questo livello viene spesso indicato con la lettera "C", per concettuale.

  • Modello di archiviazione che rappresenta tabelle, colonne e relazioni definite nel database. Questo livello viene spesso indicato con il successivo "S", per l'archiviazione.

  • Mapping tra il modello concettuale e lo schema del database. Questa mappatura viene spesso definita mappatura "C-S".

Il motore di mapping di ENTITY sfrutta il mapping "C-S" per trasformare le operazioni su entità, ad esempio creare, leggere, aggiornare ed eliminare, in operazioni equivalenti sulle tabelle nel database.

Il mapping tra il modello concettuale e gli oggetti dell'applicazione viene spesso definito mapping "O-C". Rispetto al mapping "C-S", il mapping "O-C" è implicito e uno-a-uno: entità, proprietà e relazioni definite nel modello concettuale devono corrispondere alle forme e ai tipi degli oggetti .NET. Da EF4 e versioni successive, il livello oggetti può essere composto da oggetti semplici con proprietà senza dipendenze da Entity Framework. Questi vengono in genere definiti Plain-Old OGGETTI CLR (POCO) e il mapping di tipi e proprietà viene eseguito in base alle convenzioni di corrispondenza dei nomi. In precedenza, in EF 3.5 erano presenti restrizioni specifiche per il livello oggetto, ad esempio le entità che devono derivare dalla classe EntityObject e dover trasportare gli attributi ef per implementare il mapping "O-C".