如何在Entity Framework中为JSON添加检查约束?

问题描述 投票:5回答:2

添加JSON CHECK CONSTRAINTfor表格字段

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

json entity-framework code-first sql-server-2016
2个回答
1
投票

我认为EF不支持任何类型的CHECK约束。您唯一可以使用的是迁移。请参阅以下示例:Is it possible to add CHECK constraint with fluent API in EF7?


3
投票

根据接受的答案,您需要添加迁移。这是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;");
    }
© www.soinside.com 2019 - 2024. All rights reserved.