为什么 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分钟进行一次自动备份,因为一直担心丢失数据。

提前非常感谢!

为什么 C# 实体框架继续还原到初始迁移点

如果希望 EF 使用迁移,则需要选择MigrateDatabaseToLatestVersion类并按如下所示指定它:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<ProjectName.DAL.myDbcontext, Configuration>());  

然后,EF 将使用你指定的实际迁移和Configuration设置。如果您不喜欢在代码中指定数据库初始值设定项,也可以在 web.config 中指定数据库初始值设定项。

CreateDatabaseIfNotExists不会使用您的迁移。它只会验证数据库是否存在,如果不存在,那么它将根据您的 DbContext 创建它。唯一使用迁移和配置文件的初始值设定项是 MigrateDatabaseToLatestVersion

如果您不想使用迁移和所有迁移,那么是的,您可以指定CreateDatabaseIfNotExists甚至NullDatabaseInitializer不会执行任何操作。