I am trying to add a computed column HasAnyCheck that returns true if any or both Check1 and Check2 is true.
My model:
public bool Check1 { get; set; }
public bool Check2 { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool HasAnyCheck { get; private set; }
My migration:
public override void Up()
{
Sql("ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1] = 1 OR [Check2] = 1)");
}
public override void Down()
{
DropColumn("dbo.MyTable", "HasAnyCheck");
}
When I run Update-Database I get the error Incorrect syntax near '='.
I suspect the issue is your computed_column_expression does not explicitly return a value:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS CAST((CASE WHEN [Check1]=1 OR [Check2]=1 THEN 1 ELSE 0 END) AS BIT)
in your case you could potentially also get away with bitwise OR:
ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1]|[Check2])