Я пытаюсь реализовать Unif Of Work вокруг ObjectContext из EF4 в веб-приложении.UoW является HttpModule.Мне нужно получить текущую транзакцию для соединения.Когда http-запрос начинается впервые, я запускаю транзакцию для objectContext с context.Connection.BeginTransaction ().В конце запроса мне нужно получить текущую транзакцию для соединения, но у объекта Connection нет свойства, позволяющего это сделать.Я сделал следующий код для его достижения, но он не работает.
private DbTransaction GetTransaction()
{
if (_currentTransaction == null)
{
var command = GetSession().Connection.CreateCommand(); // just to get the current transaction
if (command.Transaction != null)
_currentTransaction = command.Transaction;
else
_currentTransaction = GetSession().Connection.BeginTransaction();
}
return _currentTransaction;
}
Я не понимаю, почему команда. Транзакция всегда равна нулю .Если я пытаюсь сделать GetSession (). Connection.BeginTransaction (), я получаю исключение, что переход уже существует и не может начать несколько транзакций параллельно.
GetSession () извлекает только текущий EF ObjectContext из HttpContext.Current.Items.ObjectContext хранится там в beginRequest.
Если вы дадите мне несколько советов, я буду признателен.
Спасибо.