26

EFでチェック制約を追加できるので、CustomerNotesエンティティにブール値の「FollowUpRequired」プロパティがある場合、ユーザーに「FollowUpDate」プロパティに有効な将来の日付を入力するように強制しますか?

4

2 に答える 2

23

EFは、EFCore3より前のチェック制約をサポートしていません。

つまり、属性をエンティティに適用して、基になるデータベースにチェック制約を作成するための適切なSQLを生成することを期待することはできません。

コードファーストデータ移行(http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx)を使用する場合のこれを回避する1つの方法は次のとおりです。移行を生成し、生成された関数オーバーライドにSql()行を追加しますUp()

例えば

public override void Up()
{
    // Auto generated code here
    // ...

    // YOUR CUSTOM SQL GOES HERE
    Sql("ALTER TABLE foo ADD CONSTRAINT CK_Some_Check CHECK (SomeDate > '20121110 00:00:00.000'");**
}

詳細については、この質問と回答も参照し てください。チェック制約を表現することは可能ですか?

于 2012-11-12T12:32:41.270 に答える
20

EFCore3.0がサポートするentity.HasCheckConstraint() ようになりました。

ライアンのを取るために:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeTable>(entity =>
        entity.HasCheckConstraint("CK_SomeTable_SomeColumn", "[SomeColumn] >= X");
}
于 2020-02-13T02:43:19.517 に答える