【问题标题】:Why is EF automatically running the seed method?为什么 EF 会自动运行种子方法?
【发布时间】:2019-12-27 20:45:54
【问题描述】:

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

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

【问题讨论】:

    标签: c# asp.net entity-framework azure seeding


    【解决方案1】:

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

    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.
        }
    

    如果你正在寻找它,试试这个。

    祝你好运

    【讨论】:

    • 哎呀,对不起,我应该提供更多细节。我们已经在使用迁移对我们的模型进行任何更改。当我们不注释种子方法时,问题就出现了。这反过来导致种子方法在服务器上看似随机的时间运行并重新初始化我们所有的数据。我们希望制止这种行为。注释掉种子方法中的所有代码有效地为我们完成了这一点,但我们想了解为什么种子方法会自行运行,即使我们没有通过发布来触发它。
    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2013-04-10
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多