添加JSON CHECK CONSTRAINT
for表格字段
ALTER TABLE [dbo].[Data]
ADD CONSTRAINT [JsonData must be formatted as JSON]
CHECK (IsJson([JsonData]) > 0)
工作正常,但我想让它适用于Code First。
我试过了Reverse Engineering Code First
,但它对这个问题没有帮助。使用相同的代码(Seed() method)
执行Sql命令非常有效,但这不是我想要使用的解决方案之一:
protected override void Seed(MyContext context)
{
context
.Database
.ExecuteSqlCommand(
"ALTER TABLE [dbo].[Data]
ADD CONSTRAINT [JsonData must be formatted as JSON]
CHECK (IsJson([JsonData]) > 0)");
}
有没有其他方法可以从Code First添加JSON Check Constraint
?
我认为EF不支持任何类型的CHECK约束。您唯一可以使用的是迁移。请参阅以下示例:Is it possible to add CHECK constraint with fluent API in EF7?
根据接受的答案,您需要添加迁移。这是EF Core语法:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("ALTER TABLE dbo.Data ADD CONSTRAINT CK_Data_JsonData_MustBeJson CHECK (IsJson(JsonData) = 1);");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("ALTER TABLE dbo.Applications DROP CONSTRAINT CK_Data_JsonData_MustBeJson;");
}