Объем транзакций WCF и NHibernate - PullRequest
0 голосов
/ 10 июля 2011

У меня есть клиентские вызовы, поступающие в службу WCF, а затем через Fluent NHibernate запрашивающие базу данных.

В данный момент WCF остается по умолчанию (т. Е. Для каждого вызова).в моем коде я делаю что-то вроде этого:

using (_repository.DbContext.BeginTransaction()) {
    try {
        _repository.SavePerson(object);
        _repository1.SaveAddress(object1);
    } catch {
        _repository.DbContext.RollbackTransaction();
        throw;
    }
}

, поскольку DbContext одинаково для _repository и _repository1.Нужно ли делать RollBack для _repository1?

Также теперь, поскольку методы Save в репозиториях, объект Session используется для сохранения объектов.

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

Также Как это координируется с вызовами WCF, мне также нужно обрабатывать транзакции со стороны WCF?

1 Ответ

0 голосов
/ 10 июля 2011

На ваш вопрос не может ответить кто-то, у кого нет доступа к вашему коду.Сессия NHibernate не создается WCF, у вас есть некоторый пользовательский код для создания сеанса.Если вы хотите одновременно выполнять операции с r1 и r2 и выполнять откат только на r1, вам необходимо выполнять сеансы с транзакцией в каждом сеансе.Теперь вы можете выполнить откат r1, не касаясь r2.

Решение состоит в том, чтобы открыть второй сеанс из фабрики сессий.

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