私は、リポジトリと作業単位パターンを使用して読み始めました。私は現在、Entity Framework asp.net Webフォームアプリケーションでそれを使用しようとしています。しかし、簡単な方法で説明できるかどうかわからない質問があります。Entity Framework asp.netアプリケーションのUOWとリポジトリ
私は業務単位をカプセル化するために作業単位が使用されていると理解しています。実施例から私はUOWが今は上記方法と同様であるbusinessMethod2()
があると、以下のよう
businessMethod1()
{
uow u = new uow(); //instantiate unit of work
repository1 rep1 = new repository1(uow); //instantiate repository1
repository2 rep2 = new repository2(uow); //instantiate repository1
rep1.dowork();
rep2.dowork();
u.save(); //save the changes made to the database. (effectively saving changes made
//in both repository classes
}
に使用さ見てきました。 businessMethod2()
内のbusinessMethod1()
をベストプラクティスとしたいとします。私は議論としてそれを渡す必要がありますので、作業単位を共有したいですか?つまり上記の方法を
businessMethod1(uow u)
{
bool isNew = false;
if (u == null)
{
u = new uow();
isNew = true;
}
repository1 rep1 = new repository1(uow); //instantiate repository1
repository2 rep2 = new repository2(uow); //instantiate repository1
rep1.dowork();
rep2.dowork();
if (isNew)
u.save(); //save the changes made to the database.
}
に変更するこれは適切な方法ですか?
私はシングルトンを使うのが良い方法だと考えていました。すべてのページリクエストで、新しいインスタンスのインスタンスが作成され、すべてのビジネスメソッドで共有されます。新しいリクエストでは、別のインスタンスが作成されます。シングルトンを使用すると、私はそれを自分のビジネス方法に渡す必要はなく、同時にすべてのビジネス方法を共有することができます。
これには何らかの欠点がありますか?これを実装するより良い方法はありますか?
これは私が本当に探し求めていたものですが、UoWリポジトリの優れた実装を見たことはありませんが、どこかにいると確信しています。 –