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])