unitofwork クラスがあり、Dispose() メソッドが自動的に呼び出されると思っていましたが、そうではありません。
public class UnitOfWork : IDisposable
{
private DBContext context = new DBContext();
private GenericRepository<Users> usersRepository;
public GenericRepository<Users> UsersRepository
{
get
{
if (this.usersRepository == null)
{
this.usersRepository = new GenericRepository<Users>(context);
}
return usersRepository;
}
}
public void Save()
{
context.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
Debug.WriteLine("This never be called :( ");
context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
多くの unitofwork およびリポジトリ チュートリアルで、Dispose() メソッドを呼び出すコードを確認できません。すべてのトランザクションが完了した後、手動で Dispose() メソッドを呼び出す必要がありますか?
このようにしてみましたが、うまくいきません。
public class UserController : Controller
{
UnitOfWork unitofwork = new UnitOfWork();
~UserController() {
Debug.WriteLine("This is never called");
unitofwork.Dispose();
}
}