EF CTP5中的modelBuilder.IncludeMetadataInDatabase在哪里?

Dan*_*zzi 6 entity-framework-4

使用CTP4,我曾经能够执行以下操作(如ptrandem所示):

modelBuilder.IncludeMetadataInDatabase = false
Run Code Online (Sandbox Code Playgroud)

使用这行代码,EF不会在我的数据库中创建EdmMetadata表,也不会跟踪模型更改.

我无法在新的CTP5中找到实现这一目标的方法,所以现在每次更改模型时,我都会得到:

自创建数据库以来,支持"MyContext"上下文的模型已更改.手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer.例如,DropCreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择使用新数据对其进行种子设定.

那么,是否每个人都知道CTP5中的IncludeMetadataInDatabase属性在哪里?谢谢.

Mor*_*avi 11

CTP5包含一个非常酷的功能,称为Pluggable Conventions,可用于添加/删除约定.IncludeMetadataInDatabase已被删除并被替换为
可插入的约定,为您做同样的事情:

modelBuilder.Conventions
            .Remove<System.Data.Entity.Database.IncludeMetadataConvention>();
Run Code Online (Sandbox Code Playgroud)

  • 没问题.我认为你在团队博客上发现的那个是谈论现有的数据库,而我建议的那个是你从对象模型生成数据库的时候.在一天结束时,它们都有相同的结果:你有一个POCO对象模型,它与没有元数据表的数据库一起工作,所以我认为它取决于你的场景(一个全新的数据库或现有的数据库). (2认同)
  • 在最新版本中,这已转移到modelBuilder.Conventions.Remove <System.Data.Entity.Infrastructure.IncludeMetadataConvention>(); (2认同)