私はこの問題のためのベストプラクティスを探してEFで問題のビットに実行しました:TestEntityFramework_UOWImplementation()メソッドではユニット、Entity FrameworkのDBContextスコープ
public void TestEntityFramework_UOWImplementation()
{
using (UnitOfWorkInventory uow = new UnitOfWorkInventory())
{
IMaterialRepository repos = new MaterialRepository(uow);
Material mat = GetMaterial("Mikes Material", 1);
mat.CostPrice = 20;
repos.InsertOrUpdate(mat);
uow.Commit();
}
}
private Material GetMaterial(string sku, int clientId)
{
IMaterialRepository repos = new MaterialRepository(new UnitOfWorkInventory();
return repos.Find(sku, clientId);
}
、その罰金、私自分の作業ユニットのスコープを作成し、その内部にリポジトリを作成します。
しかし、私は以下のようにgetMaterials()を使いたいと思います。実際にパラメータとして渡さない限り、作業単位やリポジトリにアクセスすることはできません!これは特に良いことではありません。
この問題を回避するにはどうすればよいですか?
ありがとうございます!
ニール
'でインスタンスメソッドであるGetMaterial'べきではありません'MaterialRepository'クラス? –
thats良い点! :)しかし、あなたがWhere()をやりたいと思っていたものがあったと言います。これらもまたレポになると思います。ありがとう!今私はそれが明らかに書かれていることを確認します:) –
実際に、いくつかのRepoクエリが必要だったと言います。あなたは、質問がレポの外で行われるケースがあるとは思わないでしょうか? または、CalculateMaterialPrices()というメソッドがあり、計算するためにMaterialsのリストが必要でした。TestEntityFramework_UOWImplementation()メソッドまたはCalculateMaterialPrices()メソッドでrepo GetMaterials()メソッドを呼び出しますか?後者の場合、どのようにレポにアクセスしますか?または私はここで正しい道にはない! –