entity framework创建空迁移但坚持我的模型不同
今天是悲伤的一天。 今天第一件事我看到EFexception说“ 自创建数据库以来,支持’DomainContext’上下文的模型已经改变了。 ” 它接近午夜,我仍然看到这个错误。 这是我职业生涯的终结 – (
我很确定模型中没有任何变化,但错误出现了。 我尝试过创建一个新的迁移,它是空的:
public void Up() { } public void Down() { }
应用此迁移没有任何好处 – 错误仍然存在。 我使用了常见的建议将初始化设置为null:
Database.SetInitializer(null);
当我访问数据库时,它使错误消失了。 但这让我非常困扰 – 每当我尝试通过代码运行迁移时,我再次看到类似的错误:
var configuration = new Migrations.Configuration(); configuration.TargetDatabase = new DbConnectionInfo("correct connection string", "System.Data.SqlClient"); var migrator = new DbMigrator(configuration); migrator.Update(); // <<-- exception is thrown here
Exception throw如下所示: System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException:无法更新数据库以匹配当前模型,因为存在挂起的更改并且禁用了自动迁移。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。
我已经更新到EF 6.1(之前是6.0.2),但这没有任何区别。
困扰我的另一件事是我可以通过Nuget Console运行迁移:
Update-Database
运行良好,不会出现任何问题。 但是,当我将DB初始化程序设置为自动运行迁移时:
var initializer = new MigrateDatabaseToLatestVersion(); Database.SetInitializer(initializer); var domainContext = new DomainContext(); domainContext.Database.Initialize(true); // <<-- this throws exception
无法更新数据库以匹配当前模型,因为存在挂起的更改并且已禁用自动迁移。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。
真正的问题是为什么EF在运行Nuget控制台和迁移DB-Initialiser时对模型有不同的哈希值? 如何找出不同的东西(来自db-state的模型)? 以及如何解决这个问题,所以我不必使用hacks(为db-initaliser分配null)?
我的问题的原因是应用于其中一个模型的[AllowHtml]
属性。 在我将MVC更新到5.1.1并将WebApi更新到2.1之后,问题就开始发生了。
我从EF-Model中删除了该属性并剥离并重新构建数据库,问题就消失了。
我写了一篇关于如何调试这类问题的博文: http : //tech.trailmax.info/2014/03/inside_of_ef_migrations/
另外我认为这个[AllowHtml]
属性是一个错误,我将创建一个可重现的解决方案,并将错误报告提交给EF-people。
更新 :我实际上永远无法重现错误。 类属性的[AllowHtml]
属性与它无关。 一个神奇的故障。
我今天遇到了同样的问题。 我在问题出现之前添加了一个ViewModel,一个View和Html.EnableClientValidation()
根本没有模型变化! 我做了一个假的改变,就像@Guilleon建议的那样,并且创建了一个有效的迁移…但它没有帮助。
然后我重新启动Visual Studio,一切都恢复了。 一定是个小故障
上述就是C#学习教程:entity framework创建空迁移但坚持我的模型不同分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1004839.html