私は現在、SQLサーバーからC#WPFアプリケーションにデータを渡しています。プリズムとEntity Frameworkを使用してDBContextを取得しています(問題がある場合はデータベース第1世代を使用します)。私は成長プロジェクトを持っています。ここでは、さまざまなプロジェクトのさまざまな画面から一度にこのサーバーに接続するつもりです。EF DBContextオブジェクトを独自のモジュール内に保持し、DIで取得する必要がありますか?
最初は、それぞれのViewModelに対して新しいDBContextオブジェクトを作成しましたが、私は、相互の変更について知らない別のインスタンスのコンテキストについてオンラインで読むのは正しいことではないという感覚がありました。
私はDIを使用して、この同じDBContextの静的インスタンスを、そのコンストラクタのインタフェースを要求する任意の画面のViewModelに持ち込みます。私はそれがかなり単純な変更だと思うが、私は確かにそれがこのように優れていると言うことができるか分からない。
この例は、Entity Frameworkによって生成される共通のDBContextオブジェクトを共有するための許容される方法ですか?そうでない場合は、どうすれば変更できますか?ありがとう!
public interface ICommonContext
{
ServerEntities Context { get; }
}
public class CommonContext : IModule, ICommonContext
{
private static ServerEntities _context;
public ServerEntities Context
{
get { return _context; }
}
public void Initialize() { _context = new ServerEntities(); }
}
/// When used in a VM ///
private ServerEntities _model;
public SomeViewModel(ICommonContext cc){
_model = cc.Context;
}
//////////////////////////
ええ、あなたは良い点を挙げました。私は私の答えを編集しました。 – Cory