2011-07-04 5 views

답변

6

다른 것들입니다.

항상 NHibernate 트랜잭션 내에서 작업해야합니다.

필요에 따라 TransactionScope를 사용할 수 있습니다. 둘 이상의 세션이 관련된 경우 분산 트랜잭션을 사용합니다.

NHibernate 트랜잭션은 자동으로 분산 트랜잭션에 참여하지만 자동으로 생성되지 않으므로 권장 패턴은 다음과 같습니다. TransactionScope가있는 경우 NH 트랜잭션을 엽니 다.

+0

네,하지만 NHibernate 트랜잭션을 열어야하는 이유는 무엇입니까? TransactionScope NHibernate 트랜잭션과 같은 데이터베이스 트랜잭션을 열지 말 것인가? – Andy

+0

@Andy : 명시 적 트랜잭션을 사용하는 것이 항상 NHibernate에 권장되므로 (특히 캐싱을 중단하지 않는 것 등), TransactionScope를 가질 때 NH 트랜잭션을 가지지 않으면 디버그하기 어려운 버그가 발생할 수 있습니다. 더 좋을 수도 있지만 그것이 그 방법입니다. –

0

트랜잭션 관리는 NHibernate ITransaction 인터페이스를 통해 응용 프로그램 개발자에게 노출됩니다. 당신은이 API를 사용하도록 강요 당하지 않습니다. NHibernate는 ADO.NET 트랜잭션을 직접 제어 할 수 있습니다.

관련 문제