0

Entity Framework と Linq クエリを使用して挿入を行う必要があります。エンティティ クラスの場合、データベース テーブルではすべてのフィールドが null 可能ではありません。テーブルに行を作成するためだけに必要な、エンティティ クラスのいくつかの重要なフィールド値を取得しました。しかし、残りのフィールドはエンティティからnull可能になります。これらのフィールド値を指定しない場合、エンティティがそれを null として db テーブルに送信せず、テーブルに新しい行を作成できるように、防止する方法を提案してください。

4

1 に答える 1

0

NULL/NOT NULL制約です。列で指定すると、その列に何らかの値を指定する必要があるか、行が無効であるNOT NULLことを文字通り SQL Server に伝えます。気まぐれでnull不可の列にnullを許可することはできません。これは、制約の目的全体を無効にするためです。

したがって、選択肢は次のとおりです。1) 列を null 可能にするか、2) デフォルト値を指定します。データベース レベルでは、次を実行できます。

ALTER TABLE SomeTable ADD CONSTRAINT DF_SomeColumn DEFAULT [Some Default Value Here] FOR SomeColumn;

Entity Framework は現在、既定値を直接指定することを許可していないため、後でテーブルを変更する必要があります。

または、カスタムのゲッターとセッターを使用して、プロパティのデフォルト値を提供することもできます。ただし、これはデータベースに制約を課さないため、EF が挿入を行っている間のみ機能します。

private DateTime? createdDate;
public DateTime CreatedDate
{
    get { return createdDate ?? DateTime.UtcNow; }
    set { createdDate = value; }
}
于 2013-06-11T15:30:15.523 に答える