ASP.NET MVC 2, NHibernate 및 DDD에서 솔루션을 만들고 있습니다. 세미 CQRS 타입 모델을 사용하고 있습니다.ASP.NET MVC 2, Nhibernate 및 여러 계층의 트랜잭션
ASP.NET 컨트롤러는 도메인 개체의 상태를 업데이트하는 서비스 계층에 유효성 검사 메시지를 보냅니다. 도메인 디스패치 "이벤트"가 있으며이 이벤트는 "이벤트 처리기"에 의해 처리됩니다. 이러한 각 이벤트 처리기는 리포지토리 계층에 대한 액세스 권한을 가지며 도메인 개체 상태를 커밋 할 수 있습니다.
이벤트 처리기는 (NHibernate가 아닌) 리포지토리를 사용하여보고 기반 테이블에 레코드를 직접 삽입합니다. 이벤트 처리기는 전자 메일 전송과 같은 데이터베이스 관련 작업이 아닌 작업을 수행 할 수도 있습니다.
이벤트 처리기는 개체의 상태를 변경하여 새로운 이벤트 집합을 만들 수도 있습니다.
단일 asp.net 요청 중에 발생하는 모든 데이터베이스 작업이 단일 트랜잭션 내에 있음을 어떻게 확신 할 수 있습니까? 일부 블로그 (예 : Kevin Williams, Matt Wrock 및 Davy Brion)를 읽었으며 시작 및 종료 요청에서 세션 개체를 시작하는 방법에 대한 정보 (여기에도 구조지도를 사용합니다)가 있지만 트랜잭션이 유지되는 방법을 알지 못합니다. 이는 시작 및 끝 요청이 다른 스레드에서 호출 될 수 있다는 사실에 의해 추가되었습니다.
My Repository Class는 매개 변수에서 NHibernate Session을 사용합니다. 하이브리드 범위 (StructureMap)로 ISession을 생성하면 StructrueMap에 의해 전달 된 요청 Isession 매개 변수가 동일하게 유지됩니다.
제 질문에 명확하지 않은 점이 있으면 알려주십시오.
는월
마르
@ 감사합니다. 지금 당장 링크를 통해 갈 것입니다. – TheMar
이 두 링크가 좋은 정보를 주었기 때문에 나는이 대답을 받아 들였다. 우물가에서 일하기 시작한다. – TheMar