как использовать явные транзакции без вложенных транзакций - PullRequest
0 голосов
/ 06 июня 2011

хорошо, поэтому Айенде рекомендует всегда использовать транзакцию , даже для операций чтения.
но предположим, что у меня есть следующий сценарий:

public Employee GetEmployeeByName(string name)
        {
            using (ITransaction tx = CurrentSession.BeginTransaction())
            {
                return dao.GetEmployeeByName(name);
            }
        }

    public void SaveNewEmployee(Employee employee)
    {
        using (ITransaction tx = CurrentSession.BeginTransaction())
        {
            if (GetEmployeeByName(employee.Name) != null)
            {
                throw new ArgumentException("employee with same name found");
            }
            CurrentSession.Save(employee);
        }
    }

это на самом деле вызовет исключение, поскольку nhibernate не поддерживает вложенные транзакции .
как я могу обойти это?

EDIT
это даже лучшее решение, чем то, которое я принял ...

1 Ответ

2 голосов
/ 06 июня 2011

Как правило, вы можете обойти это, используя шаблон рабочего блока, в котором вы можете начать транзакцию одновременно с открытием сеанса. То есть в начале единицы работы. И вы совершите это в конце единицы работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...