提问人:advapi 提问时间:4/3/2023 更新时间:10/5/2023 访问量:133
使用 Fluent migrator 添加计算列
Add computed column with fluent migrator
问:
我有一个具有 JSON 内容属性的表。我希望使用计算列提取一个值,我确定它在该字段中。我在过去的json_value里用过它。如何在 Fluent migrator 中定义计算列?
我的迁移定义为
[Migration(202304031401, "somedesc.")]
public class AddProductTableMigration:Migration
{
public static string TableName = "xxx";
public override void Up()
{
Create.Table(TableName).InSchema("dbo")
.WithColumn("Id").AsInt32().NotNullable().Unique()
.WithColumn("JsonContent").AsCustom("nvarchar(max)").NotNullable();
}
public override void Down()
{
if (Schema.Table(TableName).Exists())
{
Delete.Table(TableName);
}
}
}
答:
0赞
Caltor
10/5/2023
#1
您可以使用如下所示的方法创建计算列:AsCustom(...)
Create.Column("DevelopmentType").OnTable("Software").AsCustom(@"
AS (
CASE
WHEN IsJS = 1 THEN 'JavaScript'
WHEN IsPython = 1 THEN 'Python'
ELSE 'Unknown'
END
)
PERSISTED
");
或者你可以像这样使用方法:Execute.Sql(...)
Execute.Sql(@"
ALTER TABLE Software ADD DevelopmentType
AS (
CASE
WHEN IsJS = 1 THEN 'JavaScript'
WHEN IsPython = 1 THEN 'Python'
ELSE 'Unknown'
END
)
PERSISTED
");
源 https://groups.google.com/g/fluentmigrator-google-group/c/Jtbdjd35tlg/
评论