为什么 C# 实体框架继续还原到初始迁移点
本文关键字:迁移 还原 实体 框架 继续 为什么 | 更新日期: 2023-09-27 18:32:42
我似乎无法弄清楚为什么EF不断恢复到第一个迁移点。它删除了我的大部分表,当然所有数据都会恢复。
我对如何跟踪和更新迁移有很好的处理,但似乎在我的 DBMigration 配置中完全忽略了以下配置选项。
internal sealed class Configuration : DbMigrationsConfiguration<ProjectName.DAL.myDbcontext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(ProjectName.DAL.myDbcontext)
{
}
}
我一直在将其部署到我们的服务器,当然有时服务器上的二进制文件与我们的本地开发区域不匹配。我在这里错过了什么吗?
为什么自动迁移已启用/自动迁移数据丢失允许不能阻止 EF 完全清除我们的数据库?我不得不升级SQL许可证,以便我可以每30分钟进行一次自动备份,因为一直担心丢失数据。
提前非常感谢!
如果希望 EF 使用迁移,则需要选择MigrateDatabaseToLatestVersion
类并按如下所示指定它:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ProjectName.DAL.myDbcontext, Configuration>());
然后,EF 将使用你指定的实际迁移和Configuration
设置。如果您不喜欢在代码中指定数据库初始值设定项,也可以在 web.config 中指定数据库初始值设定项。
CreateDatabaseIfNotExists
不会使用您的迁移。它只会验证数据库是否存在,如果不存在,那么它将根据您的 DbContext 创建它。唯一使用迁移和配置文件的初始值设定项是 MigrateDatabaseToLatestVersion
如果您不想使用迁移和所有迁移,那么是的,您可以指定CreateDatabaseIfNotExists
甚至NullDatabaseInitializer
不会执行任何操作。