у меня есть класс UnitOfWork и хранилище, которое использует его что-то вдоль линий этого:UnitOfWork, хранилища и утилизация соединений
единицы работы
private SqlConnection _conn;
private TransactionScope _ts;
public UnitOfWork(SqlConnection conn, TransactionScope ts)
{
_ts = ts;
_conn = conn;
_conn.EnlistTransaction(Transaction.Current);
}
public SqlConnection Connection
{
get { return _conn; }
}
public void Save()
{
_ts.Complete();
}
#region IDisposable
public void Dispose()
{
if (_conn != null)
{
_conn.Dispose();
_conn = null;
}
if (_ts != null)
{
_ts.Dispose();
_conn = null;
}
}
хранилище
SqlConnection _conn;
public Repository(IUnitOfWork uow)
{
_conn = uow.Connection;
}
// some methods
public void Dispose()
{
if (_conn != null)
{
_conn.Dispose();
_conn = null;
}
}
Я использую его вот так
using (var uow = new UnitOfWork())
{
using (var repo = new Repository(uow))
{
if (repo.UpdateStuff())
{
uow.Save();
}
}
}
метод dispose сначала вызывается в репо, который устанавливает и завершает соединение. Но потом, когда мы доберемся до UOW отчуждать, соединение больше не утратившее расположено «снова» Я уверен, что является тупым, но может кто-нибудь объяснить, пожалуйста,
благодаря
поэтому я просто не должен делать repo idisposable и оставлять это для утилизации UOW. я сделал это так, чтобы я мог написать это: using (var repo = новый репозиторий (новый UnitOfWork())) {} – nat
Вопрос: «Репозиторий должен распоряжаться и освобождать соединение UoW?». Для меня это скорее работа UoW. – tumasgiu