首页 > 解决方案 > 为什么 EF 会自动运行种子方法?

问题描述

我们使用 ASP .NET 创建 API 驱动的 CMS。有时我们需要用默认数据填充数据库并为此使用 EF 的种子方法。我知道当我们在 Nuget 包管理器控制台中运行 update-database 以及部署时会调用种子,但由于某种原因,一旦项目部署在服务器上,我们的种子方法似乎会调用自身。我们使用 Azure 应用服务来托管我们的 CMS。

有谁知道如何关闭这种自动播种行为?我们没有注意到时间方面的定义模式,只是注意到它发生在我们的数据库重新初始化之后。

标签: c#asp.netentity-frameworkazureseeding

解决方案


我认为它必须与迁移有关,但是我不知道您为什么要手动更新数据库,您可以使用迁移来解决这个问题。

1- 转到 Nuget 包管理器控制台。

2-启用迁移。

3-将配置方法设置为自动迁移和数据丢失。

public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }

4- 将种子方法留空

protected override void Seed(Yourproject.DAL.Yourdbcontext)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data.
    }

如果它是你要找的东西,试试这个。

祝你好运


推荐阅读