私はEntity Framework 4.1を使用してASP.Net MVC 3 Webアプリケーションを作成しています。代わりに私のコントローラに私のUOWクラスを注入する、http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-applicationASP.Net MVC 3作業単位の処理
しかし、この優れたチュートリアルで説明したようにワーク・クラスの私のユニットは、私がそう
public class ListService : IListService
{
private IUnitOfWork _uow;
public ListService(IUnitOfWork uow)
{
_uow = uow;
}
public IList<List> GetAllListTypes()
{
return _uow.Lists.Get().OrderBy(l => l.description).ToList();
}
}
私のユニットのように、私のサービスクラスで行うと同じですこのクラスは次のようなものです
public class UnitOfWork : IUnitOfWork, IDisposable
{
readonly LocumEntities _context = new LocumEntities();
private GenericRepository<List> _lists = null;
public IGenericRepository<List> Lists
{
get
{
if (_lists == null)
{
_lists = new GenericRepository<List>(_context);
}
return _lists;
}
}
public void Commit()
{
_context.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
これはすべて正常です。しかし、私はあなたのDbContextを処分する私のUoWクラスのメソッドを持っていることに気づくでしょう。私はこの方法を修正して、私の中でそれを配置しようとしたようなすべての業務トランザクションが上記のチュートリアルで行われた後、彼らはコントローラに
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
を次のコードを使用してこれを行うUOWクラスを処分したいですサービスクラスしかし、それは動作しない、すなわち、UOWクラスのdisposeメソッドは
protected override void Dispose(bool disposing)
{
_uow.Dispose();
}
と呼ばれることは決してありません誰かが私のUOWクラスを処分する方法で正しい方向に私を指すことができれば、私は非常に感謝。
ありがとうございます。これに
どのようなサービスを作成していますか?それはASP.NET Web API、WCF、Windowsサービス、ビジネスロジックサービスか何ですか?あなたのサービスの廃棄は今まで呼ばれていますか?あなたのサービスを処分する責任は誰にありますか? –
@ LadislavMrnka - サービスクラスは、自分のビジネスロジックのためのASP.Netクラスセットアップです。サービスレイヤーは、自分のUIとドメインモデルの間にあります。私はサービスクラスにdisposeメソッドを持っていません。 – tgriffiths
@tgriffiths - 依存性注入にはどのIoCコンテナを使用しますか?それらのほとんどは、作成したコンポーネントを処分することができます。 –