私は Entity Framework (5.0 以降) を学び始めたばかりで、いくつかの問題に直面しています。Pluralsight でいくつかのビデオを見た後、クリエイティブになることに決め、DbContext から継承され、ジェネリック型の DbSet である単一の「DataContext」プロパティを公開する抽象基本クラスを作成しました。このようなもの:
public abstract class BaseDataContext<E> : DbContext
where E : CustomEntity
{
public DbSet<E> DataContext {get;set;}
public BaseDataContext()
{
Database.SetInitializer<BaseDataContext<E>>(null);
}
}
これは、互いに関係のあるエンティティ (親/子) を扱い始めるまではうまく機能しているように見えました。発生していたのは、BaseDataContext を継承したデータ クラスを介して新しい子エンティティをデータベースに追加しようとしたときに、単に参照をアタッチするのではなく (つまり、子を取得して「親キーは 123 です」と言う)、別のエンティティを作成したことです。親の新しいキーを持つレコードと他のすべてのフィールドが複製され、この新しいレコードが子の親になりました。私は自分の子供のキー プロパティを設定しようとしましたが (データで公開されたプロパティを無効にしました)、何も変わりませんでした。私がやろうとしていたことのように複数のデータコンテキストを実行するのは良い考えではなく、何が起こっているのかを正確に説明しているように見えるSO ( here ) のスレッドを見つけました。
これに対する私の質問は、EF の人気が高まっているようですが、これは一般的なアプローチですか? どこでもコンストラクターで渡される単一のデータ コンテキストを作成するには? または、より一般的なより簡単な方法はありますか?これは、コンテキストを渡すことが困難になる可能性があるため、バックグラウンド スレッドに入る場合に特に当てはまります。
前もって感謝します!