[Required]
属性をEntity Frameworkの複合型に定義する必要があります。たとえば、私は、エンティティを持っています(オプション:Address
)。 Addressエンティティには、必要なPostCode
プロパティがあります。任意のEntity Framework複合型の必須プロパティ
[ComplexType]
public class Address {
public string Address1 { get; set; }
[Required]
public string PostCode { get; set; }
}
public class Customer {
public int CustomerId {get;set;}
public Address Address {get;set;}
}
私は別のエンティティとしての私の複合型を保管する必要はありません(私は実際にアドレスを使用していないよ、この問題のちょうど簡単なイラスト)。私は空の住所エンティティを指定した場合
Null value for non-nullable member. Member: 'Address'.
、検証が必要なため属性の郵便番号フィールドに失敗します。これはエラーになりますので、私は、Customer.Addressのヌルを残すことはできません。
これを達成する方法はありますか?私はEF5/NET4.5を使用しています。
本当に別のエンティティなしでこれを行うことを望んでいました。私はちょっと違ったバリデーションをしなければならないと思います。とにかく私の疑惑を確認してくれてありがとう! – Richard
これはEFの本当に悪い特徴です。 Addressオブジェクトでリフレクションを使用すると、EFはテーブル作成時に作成する列を簡単に作成できます。それを動作させるためにエンティティからAddressのインスタンスを持つ必要はありません。エンティティの作成/更新時に、ComplexTypeプロパティがnullの場合、データベースのこれらのカラムをnullに設定するのは難しいでしょうか?これは、EF IMOの次のバージョンに追加される簡単な機能です。 – Ibraheem