2010-06-24 2 views
3

Рассмотрим модель транзакции для просмотра, где с помощью IHttpModule я открываю транзакцию, используя стандарт ISession.Могу ли я иметь как ISession, так и IStatelessSession рядом?

Теперь у меня есть страница, где я хочу выполнять некоторые пакетные операции. Поскольку IStatelessSession является предпочтительным для пакетных операций:

  1. Могу ли я иметь как ISession и IStatelessSession открыты в то же время? Это безопасно?
  2. Если 1. да, могу ли я использовать то же самое ITransaction?
  3. Если 2. не должен я Commit & Закройте ISession и связанный с ним ITransaction, а затем открыть IStatelessSession и новый ITransaction для него?
  4. Если 3. Да, есть ли какие-то подводные камни, о которых я должен знать?

любые идеи приветствуются

ответ

2
  1. Да и да.
  2. Нет, у каждого будет своя транзакция.
  3. Я бы совершил транзакцию ISession, но оставил ISession открытым.

Я рекомендую не начинать транзакцию для каждого HTTP-запроса. Вместо этого запустите и зафиксируйте транзакцию на странице, когда у вас есть изменения для фиксации. Это также улучшает обработку исключений, потому что вы можете поймать исключение на странице, а не в конце запроса.

Смежные вопросы