gpt4 book ai didi

c# - Entity Framework 迁移-使用现有条目的值添加新列

转载 作者:行者123 更新时间:2023-12-04 00:46:59 24 4
gpt4 key购买 nike

我有一个使用“ Entity Framework 代码优先”的应用程序。

在表中,我必须添加一列。因此,我将其添加到模型中并创建了一个Migration。

但是在迁移过程中,我想更新现有条目并为此新列添加一个值。该值必须从数据库中获取(我的“配置”表中的常量字段)。

但是默认值应仅应用于现有条目,而不应用于下一个。

如何从我的迁移类(class)中做到这一点?

我目前的迁移类(class):

public override void Up()
{
var theDefaultValue = MyConstants.MyConstantParameterFromDatabase;
AddColumn("MySchema.MyTable", "MyNewColumn", c => c.Decimal(nullable: false, precision: 18, scale: 2));
}

编辑:仍在寻找一种解决方案来更新所有现有条目(值为0),但仅在此迁移之后...

最佳答案

您只需修改Up()方法,并在其中包含一条SQL语句即可设置现有行中的列值。仅当数据库更新且更新涉及此特定迁移时才执行此操作。因此,当调用Update-Database时,仅已存在的行将被更新。

AddColumn命令之后添加这样的代码,以便在运行SQL语句时该列在表中已经可用:

Sql("UPDATE dbo.MyTable SET Column = (SELECT val FROM config)");

注意: (SELECT val FROM config)是伪代码,您必须将其替换为返回所需值的查询

关于c# - Entity Framework 迁移-使用现有条目的值添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27522749/

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