Sto provando a utilizzare il modello EF 4 Code First. Il mio codice di inizializzazione è la seguente:Codice EF 4 Primo: la compatibilità del modello non può essere verificata perché il tipo EdmMetadata non è stato incluso nel modello
Crea Model Builder:
private static DbModelBuilder CreateModelBuild()
{
var builder = new DbModelBuilder();
//add entity classes about 12 of them
builder.Conventions.Remove<IncludeMetadataConvention>();
return builder;
}
Creare sessione:
private bool BuildSqlServerSession(DbModelBuilder builder)
{
var model =
builder.Build(new SqlConnection(@"connection string"));
var cm = model.Compile();
var context = new LittlePOSContext(cm);
var dbExists = context.Database.Exists();
_session = new EFSession(context);
return dbExists;
}
Questo funziona quando si esegue il codice per la prima volta. Ma se in esecuzione su seconda volta e cercando di aggiungere un oggetto utilizzando context.Add(myEntity)
ottengo seguente eccezione:
Model compatibility cannot be checked because the EdmMetadata type was not
included in the model. Ensure that IncludeMetadataConvention has been added
to the DbModelBuilder conventions.
Ho provato a rimuovere seguente riga:
builder.Conventions.Remove<IncludeMetadataConvention>();
ma ho ancora ottenere l'errore.
È compatibile.Il problema è che la prima volta che lo crei, non ha una tabella per il monitoraggio delle modifiche del modello, quindi si lamenta. Una volta che il database viene creato da EF la prima volta, puoi cambiare la tua strategia di inizializzazione in quello che era. –