Estoy intentando utilizar el patrón EF 4 Code First. Mi código de inicialización es el siguiente:EF 4 Primero el código: No se puede verificar la compatibilidad del modelo porque el tipo EdmMetadata no se incluyó en el modelo
Crear un generador de modelos:
private static DbModelBuilder CreateModelBuild()
{
var builder = new DbModelBuilder();
//add entity classes about 12 of them
builder.Conventions.Remove<IncludeMetadataConvention>();
return builder;
}
Crear sesión:
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;
}
Esto funciona cuando corro el código por primera vez. Sin embargo, cuando se ejecuta en segundo tiempo y se trata de añadir un objeto utilizando context.Add(myEntity)
consigo siguiente excepción:
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.
He intentado quitar siguiente línea:
builder.Conventions.Remove<IncludeMetadataConvention>();
pero todavía consigo el error.
Es compatible.El problema es que la primera vez que lo crea, no tiene una tabla para rastrear los cambios del modelo, por lo tanto, se queja. Una vez que EF crea la base de datos por primera vez, puede cambiar su estrategia de inicialización a la que era. –