Могу ли я иметь одновременно ISession и IStatelessSession? - PullRequest
3 голосов
/ 24 июня 2010

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

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

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

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

1 Ответ

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

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

...