1

私はこのようなクラスを持っています:

public class Customer : Entity
{
    [Required]
    public string Forename { get; set; }
    [Required]
    public string Surname { get; set; }

    public virtual ICollection<GazetteerLinks> GazetteerLinks { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
}

1からn個のサブクラスに継承されます。一部のサブクラスでRequiredアノテーションを無効にする方法はありますか?サードパーティからのすべてのデータセットが要件を満たすことができるかどうかは100%確信できませんが、自分で作成しているデータセットにそれを適用したいと思います。

4

1 に答える 1

2

これについてコメントと回答があります。

コメント:Requiredあなたが説明している場合、その注釈はそこにあるビジネスではありません。サードパーティへのアクセスを許可していて、それらがそれらのプロパティを必要とするかどうかわからない場合は、それらをnull許容にする必要があります。独自のデータセットの場合は、ViewModelオブジェクトを作成し、そのオブジェクトに対して検証を行うことを強くお勧めします。検証に合格した後でのみ、データベースオブジェクトを作成し、データベースに保存します。そうすれば、両方の長所を活かすことができます。サードパーティがそれを必要としないことを心配する必要はなく、自分の作業には検証が必要になります。

答え:私は最近取り組んでいるプロジェクトでも同様の状況にありました。私がやったことは、そのクラスを抽象クラスにしてから、サブクラスの値をオーバーライドすることでした。プロパティをオーバーライドし、さまざまな注釈がある場合、EFは、テーブルを作成するためのオーバーライドのみを確​​認できるほど賢いです。

于 2013-02-12T18:36:37.027 に答える