ほとんどの場合(すべてではないにしても)、私のEntity Framework POCOに仮想関数があります。エンティティが遅延ロードされるようにこれらの関数を仮想的にする必要があります。コンストラクタで仮想関数を呼び出すのを避けるには?
コンストラクタでAccommodations
を初期化すると、コンストラクタで仮想関数が呼び出されますが、これは悪い習慣です。
しかし、コンストラクタでない場合、どうすればAccommodations
を初期化できますか?遅延ロードで
public class Venue
{
public Venue()
{
Accommodations = new HashSet<Accommodation>();
}
public virtual ICollection<Accommodation> Accommodations { get; set; }
}
遅延読み込みのポイントがするまで、すべてでそれを初期化する_not_です最初の使用。 –
@JohnWillemse私はそれをnullにすると私は私のビューでnull例外を取得します。 –
いいえ、nullをテストし、必要に応じて初期化します。その使用法のデモンストレーションについては、以下のウィレム・ダンカンの答えを参照してください。たぶん同じパターンのダニエルのコメントによれば、ここではさまざまなパターンを混乱させているかもしれません。 –