ci sono tutorial che spiegherebbe l'API Fluent insieme Database- Primo approccio perché l'API Fluent è fatta solo per l'approccio Code-First. Non hai bisogno dell'API Fluent se vuoi creare il tuo modello tramite Database-First.
API fluente (insieme a annotazioni e convenzioni di dati Code-First) è uno strumento per definire i dettagli del modello nel codice, come la lunghezza della stringa, se è richiesta una proprietà o il tipo di relazione: molti-a-molti, uno -to-many, ecc. Quando si utilizza Database-First o Model-First il file EDMX ha lo stesso scopo: contiene tutti i dettagli e le definizioni di mapping del modello. L'API Fluent (+ annotazioni e convenzioni di dati) sostituisce il file EDMX solo quando si utilizza Code-First.
Se si crea il modello tramite Database-First o Model-First, si avrà un file EDMX che rappresenta il modello. È possibile applicare T4 DbContext Generator a questo file EDMX. I file generati hanno due caratteristiche essendo differente da Codice-Primo:
La stringa di connessione generata contiene una riferendosi sezione per i metadati EDMX che sarà integrato nella vostra assemblea:
connectionString="metadata=res://*/Model.csdl
|res://*/Model.ssdl
|res://*/Model.msl;
..."
Il generato contesto DbContext
avrà un OnModelCreating
metodo ignorato che ha appena genera un'eccezione:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
Fintanto che si lascia la sezione dei metadati nella stringa di connessione, EF non chiamerà nemmeno OnModelCreating
o alcun codice in Fluent API in questo metodo. La sezione dei metadati indica a EF che il modello è DB o Model-First e che i metadati sono definiti nell'EDMX incorporato e non nell'API Fluent.
Tuttavia, è possibile rimuovere la sezione dei metadati dalla stringa di connessione, rimuovere UnintentionalCodeFirstException
e scrivere il codice con Fluent API in OnModelCreating
. È possibile seguire questa procedura per creare un modello iniziale tramite Database-First e quindi costruire su questo modello iniziale per ulteriori sviluppi con Code-First.
A questo punto non si lavora più con Database-First, ma Code-First e tutto ciò che leggi su Fluent API è valido per te.
Contrassegnerò il tuo post come risposta in un giorno o due dato che hai già risposto alla mia domanda originale, ma se trovi il tempo - attualmente sto imparando su DBContext e la sua API di convalida. Ad ogni modo, presumo che l'API di validazione possa essere utilizzata anche con Database-First, anche se Database-First non utilizza Fluent-API? – user702769
@ user702769: Hm, bella domanda ... Davvero non lo so. Non ho mai usato la funzione di convalida con database-first. Forse fai una nuova domanda al riguardo. – Slauma
lo farà. Grazie mille per il tuo aiuto – user702769