Код Entity Framework Первая миграция для вычисляемого столбца - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь добавить вычисляемый столбец HasAnyCheck , который возвращает значение true, если любой или оба Check1 и Check2 имеет значение true.

My модель:

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 Я получаю ошибку Неверный синтаксис рядом с '=' .

1 Ответ

1 голос
/ 17 апреля 2020

Я подозреваю, что проблема в том, что ваша computed_column_expression не возвращает явно значение:

ALTER TABLE [MyTable] ADD [HasAnyCheck] AS CAST((CASE WHEN [Check1]=1 OR [Check2]=1 THEN 1 ELSE 0 END) AS BIT)

, в вашем случае вы могли бы также избежать неприятностей с побитовым ИЛИ :

ALTER TABLE [MyTable] ADD [HasAnyCheck] AS ([Check1]|[Check2])
...