gpt4 book ai didi

c# - 在 Entity Framework 数据库迁移期间应如何运行自定义代码?

转载 作者:行者123 更新时间:2023-11-30 12:29:27 24 4
gpt4 key购买 nike

我有一个非常简单的 Entity Framework 5 DbMigration,它将一个新的 bool 列添加到现有表中,其中包含数千条记录。我希望根据同一个表中其他两个列中的值设置每个现有行的该列的初始值。这应该只会影响现有记录,因此应该只在执行迁移时运行并且永远不会再次运行。

这基本上是需要执行的逻辑:

var users = (from u in context.Users select u).ToList();
users.ForEach(u =>
{
u.MyNewBoolColumn = (u.Column1 != null && u.Column2 == "some-value");
context.Users.AddOrUpdate(u);
});

我能想到两个选项,但我都不喜欢:

  1. 创建两个单独的迁移,因为该列在第一个迁移完成后才会存在。这看起来很草率,我也不确定如何在第二次迁移中获取数据库上下文以实际执行更新。
  2. 在 DbMigrationsConfiguration 实现中运行代码。但是,这段代码每次都会运行,我无法判断它是否已经运行并且不应该更新记录。

还有其他更好的选择吗?

最佳答案

迁移表示 schema 中的更改,因此您不能在迁移中使用 AddOrUpdate() 东西。但是您可以,这就是我的建议,使用 Sql() 方法运行纯 SQL 代码。

关于c# - 在 Entity Framework 数据库迁移期间应如何运行自定义代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495583/

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