我对Entity Framework一般都是新手,并且刚刚开始着手实施迁移。
当我第一次设置我的模型类和相应的DbContext
类时,该类得到了OnModelCreating
的覆盖,我在其中放置了FluentAPI命令来设置IsMaxLength
和{{ 1}}。
我已经创建了一个名为" 201708081210041_InitialCreate"的初始创建的迁移。
数据库(重新)创建以前不是问题,但现在是。如果我保留所有这些,并允许EF创建数据库,我收到此错误消息:
无法更新数据库以匹配当前模型,因为有 挂起的更改和自动迁移已禁用。要么写 待定模型更改为基于代码的迁移或启用自动 移民。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为 如果启用自动迁移,则为true。
虽然我在其他Q& A中找到了对此消息的引用,但我并不完全理解这一点,以便了解我所引起的潜在问题。
一些额外的信息:
HasPrecision
中注释掉代码,则错误会停止。OnModelCreating
以来未对模型类进行任何更改
是的。InitialCreate
。MigrateDatabaseToLatestVersion
这些东西是不相容的吗?我应该"保存"那些改变自己,不知何故?我现在应该避免AutomaticMigrationsEnabled = false
启用迁移吗?
更新:
通过完全取消OnModelCreating
代码,我能够解决这个特定问题。为此,我将其所有操作添加到OnModelCreating
代码中。我还了解到,以前的模型存储在迁移的InitialCreate
中(您只能通过直接检查XML来看到,顺便说一句),这也是注入了一些更改。显然,上一次迭代,resx
代码与实际迁移之间存在细微差别。对我来说整件事似乎很脆弱。