Возможно, я ошибаюсь, но первое, что приходит мне в голову, это то, что UnitOfWork.Current
возвращает уже удаленную единицу работы.
Представьте себе следующий код:
void MethodA ()
{
using (IUnitOfWork uow = UnitOfWork.Current)
{
// do some query here
}
}
void MethodB ()
{
using (IUnitOfWork uow = UnitOfWork.Current)
{
// do another query here
}
}
MethodA (); // works OK
// now UnitOfWork.Current is disposed
MethodB (); // raises exception
Вопрос сводится к тому, что именно UnitOfWork.Current
делает и что должен делать.Должен ли он создавать новый объект каждый раз, когда к нему обращаются?Должен ли он сохранить ссылку, если он не утилизирован?Это не очевидно, и вы могли быть смущены этим.