实体框架出错:无法更新数据库以匹配当前模型

时间:2017-08-08 15:24:03

标签: c# entity-framework-6 ef-migrations

我对Entity Framework一般都是新手,并且刚刚开始着手实施迁移。

当我第一次设置我的模型类和相应的DbContext类时,该类得到了OnModelCreating的覆盖,我在其中放置了FluentAPI命令来设置IsMaxLength和{{ 1}}。

我已经创建了一个名为" 201708081210041_InitialCreate"的初始创建的迁移。

数据库(重新)创建以前不是问题,但现在是。如果我保留所有这些,并允许EF创建数据库,我收到此错误消息:

  

无法更新数据库以匹配当前模型,因为有   挂起的更改和自动迁移已禁用。要么写   待定模型更改为基于代码的迁移或启用自动   移民。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为   如果启用自动迁移,则为true。

虽然我在其他Q& A中找到了对此消息的引用,但我并不完全理解这一点,以便了解我所引起的潜在问题。

一些额外的信息:

  1. 如果我在HasPrecision中注释掉代码,则错误会停止。
  2. OnModelCreating以来未对模型类进行任何更改     是的。
  3. 数据库初始值设定项设置为InitialCreate
  4. MigrateDatabaseToLatestVersion
  5. 这些东西是不相容的吗?我应该"保存"那些改变自己,不知何故?我现在应该避免AutomaticMigrationsEnabled = false启用迁移吗?

    更新: 通过完全取消OnModelCreating代码,我能够解决这个特定问题。为此,我将其所有操作添加到OnModelCreating代码中。我还了解到,以前的模型存储在迁移的InitialCreate中(您只能通过直接检查XML来看到,顺便说一句),这也是注入了一些更改。显然,上一次迭代,resx代码与实际迁移之间存在细微差别。对我来说整件事似乎很脆弱。

0 个答案:

没有答案