The*_*iot 13 entity-framework-4 ef-code-first
我正在尝试使用EF 4 Code First模式.我的初始化代码如下:
创建模型构建器:
private static DbModelBuilder CreateModelBuild()
{
var builder = new DbModelBuilder();
//add entity classes about 12 of them
builder.Conventions.Remove<IncludeMetadataConvention>();
return builder;
}
Run Code Online (Sandbox Code Playgroud)
创建会话:
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;
}
Run Code Online (Sandbox Code Playgroud)
这在我第一次运行代码时有效.但是当第二次运行并尝试使用context.Add(myEntity)我添加一个对象时,我得到以下异常:
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.
Run Code Online (Sandbox Code Playgroud)
我试过删除以下行:
builder.Conventions.Remove<IncludeMetadataConvention>();
Run Code Online (Sandbox Code Playgroud)
但我仍然得到错误.
The*_*iot 30
嗯,这感觉有点傻,但真正的罪魁祸首是声明:
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
Run Code Online (Sandbox Code Playgroud)
它似乎DropCreateDatabaseIfModelChanges与Code First方法不兼容,或者是其他一些我还不了解的神秘事物.
| 归档时间: |
|
| 查看次数: |
21361 次 |
| 最近记录: |