实体框架代码优先迁移到计算列

时间:2020-04-07 21:08:47

标签: asp.net-mvc-4 ef-code-first

我正在尝试添加一个计算列 HasAnyCheck ,如果 Check1 Check2 中的任何一个或两个为true,则返回true。

我的模特:

New-Object SomeType [-ArgumentList] arg1, ...

我的迁移:

public bool Check1 { get; set; }

public bool Check2 { get; set; }

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool HasAnyCheck { get; private set; }

当我运行更新数据库时,出现错误'='附近的语法不正确。

1 个答案:

答案 0 :(得分:1)

我怀疑问题是您的computed_column_expression没有明确返回值:

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