【问题标题】:Where is modelBuilder.IncludeMetadataInDatabase in EF CTP5?EF CTP5 中的modelBuilder.IncludeMetadataInDatabase 在哪里?
【发布时间】:2010-12-19 19:01:36
【问题描述】:

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

modelBuilder.IncludeMetadataInDatabase = false

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

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

支持“MyContext”的模型 自数据库以来上下文已更改 被创建。要么手动 删除/更新数据库,或调用 Database.SetInitializer 与 IDatabaseInitializer 实例。为了 例如, DropCreateDatabaseIfModelChanges 策略将自动删除并 重新创建数据库,并且可以选择 用新数据播种它。

那么,大家知道 CTP5 中的 IncludeMetadataInDatabase 属性在哪里吗?谢谢。

【问题讨论】:

    标签: entity-framework-4


    【解决方案1】:

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

    modelBuilder.Conventions
                .Remove<System.Data.Entity.Database.IncludeMetadataConvention>();
    

    【讨论】:

    • 谢谢,莫特萨。您知道这样做与仅删除 EdmMetadata 表(如 ADO.NET 团队博客所述)之间是否还有其他区别?什么是可取的?
    • 没问题。我认为您在团队博客上找到的内容是关于现有数据库的,而我建议的内容是针对您从对象模型生成数据库时的内容。归根结底,它们都有相同的结果:您有一个 POCO 对象模型,它可以与没有元数据表的数据库一起使用,所以我认为这取决于您的场景(全新的数据库或现有的数据库)。
    • 在最新版本中,这已移至 modelBuilder.Conventions.Remove();
    【解决方案2】:

    CTP5 中关闭初始化器逻辑的等效项:在 Global.asax 的 Application_Start 中,输入以下内容:

    System.Data.Entity.Database.DbDatabase.SetInitializer<MyDBContext>(null);
    

    【讨论】:

      【解决方案3】:

      在 EF 4.1 中

      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
          modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
      }
      

      【讨论】:

        【解决方案4】:

        一直在寻找这个问题,我必须在发布我的问题后立即找到答案,DUH。直接来自ADO.NET team blog

        在 CTP5 中,我们不再需要 执行附加配置时 映射到现有数据库。如果 Code First 检测到它正在指向 到现有的数据库模式,它 没有创造,那么它将“信任” 你'并尝试先使用代码 与架构。最简单的方法 将 Code First 指向现有的 数据库是添加一个App/Web.config 同名连接字符串 作为您的派生 DbContext (...)

        【讨论】:

          猜你喜欢
          • 2011-07-09
          • 2018-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多