Pia*_*ong 5 json entity-framework code-first sql-server-2016
JSON CHECK CONSTRAINT为表添加一个表字段
ALTER TABLE [dbo].[Data]
ADD CONSTRAINT [JsonData must be formatted as JSON]
CHECK (IsJson([JsonData]) > 0)
Run Code Online (Sandbox Code Playgroud)
工作正常,但我想让它适用于Code First.
我试过了Reverse Engineering Code First,但它对这个问题没有帮助.使用相同的代码执行Sql命令(Seed() method)非常有效,但这不是我想要使用的解决方案之一:
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)");
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以JSON Check Constraint从Code First 添加?
根据接受的答案,您需要添加迁移。这是 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;");
}
Run Code Online (Sandbox Code Playgroud)