gpt4 book ai didi

c# - Entity Framework : Only Seed when building initial database

转载 作者:太空狗 更新时间:2023-10-29 20:30:27 26 4
gpt4 key购买 nike

我将 Entity Framework 6 与此 DbMigrationsConfiguration 结合使用:

public sealed class Configuration : DbMigrationsConfiguration<DataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}

protected override void Seed(Danfoss.EnergyEfficiency.Data.DataContext context)
{
//Adding initial data to context

context.SaveChanges();
}

}

我以这种方式在 WebAPI 中使用它:

public static void Register(HttpConfiguration config)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());
}

我注意到每次我的应用程序启动时,Seed 函数都会运行。我怎样才能防止这种情况发生?我只喜欢它在第一次运行时运行,当它构建初始表时。

最佳答案

每次调用 Update-Database 时都会调用 DbMigrationsConfiguration.Seed 方法。 One Unicorn 在此博客中解释了其背后的原因。 .

这意味着您必须编写Seed 代码来处理现有数据。如果你不喜欢那样,你可以在 CodePlex 上投票改变.

在此期间,引用博客:

The best way to handle this is usually to not use AddOrUpdate for every entity, but to instead be more intentional about checking the database for existing data using any mechanisms that are appropriate. For example, Seed might check whether or not one representative entity exists and then branch on that result to either update everything or insert everything

我过去使用的另一个选项是使用 Sql 命令在迁移本身中添加与迁移相关的常设数据。这样它只运行一次。我倾向于远离这一点,因为我更喜欢将播种保留在一个地方。

关于c# - Entity Framework : Only Seed when building initial database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com