2012-03-19 1 views
8

コードファーストを使用してクラスに文字列を定義すると、生成されたデータベースの列の既定値によってNULLが許可されます。文字列のNullabilityとEntity Frameworkによって作成された列の他のデータ型Code First

public string MyString { get; set; } 

は、この列を作成します。

のMyString(データ型はnvarchar(max)は、ヌル)

私は[Required]属性を使用して、または.IsRequiredを使用して "nullでない" に変更することができます()メソッドをFluent APIに追加しました。

他のデータ型のデフォルトでは、NULLは許可されません。

public int MyInt { get; set; } 
    public DateTime MyDateTime { get; set; } 
    public float MyFloat { get; set; } 
    public decimal MyDecimal { get; set; } 
    public bool MyBool { get; set; } 

は、これらの列を作成します。

ミン(int型、NOT NULL)

MyDateTime(日時、NOT NULL)

MyFloat(nullで、本物ではない)

MyDecimal(DECIMAL(18,2)、NOT NULL)(nullでないビット)

MyBool

Iは流暢APIに.IsOptional()メソッドを使用してヌルを許可するようにこれらを変更することができ

。同じことをする属性はありますか?

また、nulls(int ?, DateTime?など)を許可するようにクラス定義内のデータ型を変更して、データベースにNULLを許可する列を作成することもできます。

デフォルトでは文字列にはnullを許可する理由はありますが、他のデータ型では許可されません。

答えて

5

これはあなた自身の答えです。リストされている他のデータ型への参照はnullにできません。したがって、コードがnullを処理できない場合は、データベースがそのコードを強制的に適用するようにします。

これを完全に明確にするには、文字列と他の値の型に特に重点を置いてください。 Here is the MDSN article on strings、あなたがnullを検索した場合、あなたはこの行表示されます。これとは対照的に

を、ヌル文字列が可能System.Stringオブジェクトのインスタンスとヌル文字列結果のメソッドを呼び出すためのあらゆる試みを参照していませんNullReferenceExceptionの場合

ただし、intがnull可能でない限り、常にデフォルト値を持つ必要があるため、NullReferenceExceptionはスローされません。

1

文字列だけでなく、EFコードファーストでもnullを使用できることを追加すると便利です。

関連する問題