我已经在我的ASP.NET MVC项目上启用了EF迁移,并且有一个InitialMigration.cs,它代表了我的项目的基本代码第一模型以及configuration.cs。
我的global.asax
中有以下代码 Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
using (var context = new Context())
{
context.Database.Initialize(true);
}
我在启用迁移时生成的Configuration.cs中将AllowAutomaticMigrations设置为“true”。现在,如果我在localdb中删除我的数据库并在本地运行我的项目,则可以使用模式成功创建数据库。
但是,如果我在任何其他计算机上运行此项目,除了我用于启用迁移的计算机(例如,在我将这些更改检查到源代码控制并在其他计算机上获得最新信息之后),我在运行项目时遇到以下异常:
EntityFramework.dll中出现'System.Data.Entity.Migrations.Infrastructure.AutomaticDataLossException'类型的异常,但未在用户代码中处理 附加信息:未应用自动迁移,因为它会导致数据丢失。在DbMigrationsConfiguration上将AutomaticMigrationDataLossAllowed设置为“true”,以允许应用自动迁移,即使它们可能导致数据丢失。或者,使用带有'-Force'选项的Update-Database,或支持显式迁移。
这没有意义,因为在另一台机器上,DB甚至不存在。在机器2上运行项目是第一次在那里运行,所以不应该有任何“数据丢失”。我在这里错过了什么吗?
更新:还在运行时验证了上下文对象。它绝对指向localdb。所以这个连接字符串是正确的。数据库尚不存在,但我仍然遇到此异常。
更新:我的初始迁移称为_v1.cs。如果我继续从第二台计算机上的程序包管理器控制台运行“添加迁移v1”,我刚从中获取最新代码,则更新现有的_v1.resx文件,然后一切正常。这里唯一改变的是* .resx中'data'节点的值,它看起来像某种加密值。