例如,我的模型中有两个简单的字符串属性:
column cumulative
index1 index2
0 0 10 []
1 11 [10]
2 12 [10, 11]
3 13 [10, 11, 12]
4 14 [10, 11, 12, 13]
1 0 20 []
1 21 [20]
2 22 [20, 21]
3 23 [20, 21, 22]
4 24 [20, 21, 22, 23]
在我的OnModelCreating内部:
cumulative
有可能这样吗?还是默认值只能是常量? 正确的方法是什么?
答案 0 :(得分:1)
否,不可能。以下是经过测试的配置;
modelBuilder
.Entity<Model>()
.Property(f => f.MyValue)
.HasDefaultValueSQL("CONCAT(SUBSTRING(BaseString, 0, 1), \'something else\')");
并产生以下迁移;
migrationBuilder.CreateTable(
name: "Test",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
BaseString = table.Column<string>(nullable: true),
MyValue = table.Column<string>(nullable: true, defaultValueSql: "CONCAT(SUBSTRING(BaseString, 0, 1), 'something else')")
},
constraints: table =>
{
table.PrimaryKey("PK_Test", x => x.Id);
});
但是,当尝试应用迁移时,生成了以下错误。错误是有关支持配置的描述。
在此上下文中,不允许使用名称“ BaseString”。有效 表达式是常量,常量表达式和(在某些情况下 上下文)变量。列名称是不允许的。