Entity Framework 计算列的代码优先迁移
Entity Framework Code First Migration for Computed Column
我正在尝试添加一个计算列 HasAnyCheck 如果有 Check1 和 [=21] returns 为真=]Check2为真。
我的模特:
public bool Check1 { get; set; }
public bool Check2 { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool HasAnyCheck { get; private set; }
我的迁移:
public override void Up()
{
Sql("ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1] = 1 OR [Check2] = 1)");
}
public override void Down()
{
DropColumn("dbo.MyTable", "HasAnyCheck");
}
当我 运行 Update-Database 我得到错误 Incorrect syntax near '='.
我怀疑问题是您的 computed_column_expression 没有明确 return 值:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS CAST((CASE WHEN [Check1]=1 OR [Check2]=1 THEN 1 ELSE 0 END) AS BIT)
在你的情况下,你也可以逃脱 bitwise OR:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1]|[Check2])
我正在尝试添加一个计算列 HasAnyCheck 如果有 Check1 和 [=21] returns 为真=]Check2为真。
我的模特:
public bool Check1 { get; set; }
public bool Check2 { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool HasAnyCheck { get; private set; }
我的迁移:
public override void Up()
{
Sql("ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1] = 1 OR [Check2] = 1)");
}
public override void Down()
{
DropColumn("dbo.MyTable", "HasAnyCheck");
}
当我 运行 Update-Database 我得到错误 Incorrect syntax near '='.
我怀疑问题是您的 computed_column_expression 没有明确 return 值:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS CAST((CASE WHEN [Check1]=1 OR [Check2]=1 THEN 1 ELSE 0 END) AS BIT)
在你的情况下,你也可以逃脱 bitwise OR:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1]|[Check2])