NHibernate를 사용하여 IRepository 패턴을 구현하고 있는데 그물 검색에 응답 할 수 없다는 질문이 있습니다.C# 공유 트랜잭션 및 IRepository를 사용하는 NHibernate
3 개의 리포지토리, PersonRepository, PersonAddressRepository 및 PersonAccountRepository가 있다고 가정합니다. 이제 비즈니스 로직에서 PersonRepository.Deactivate(), PersonAddressRepository.Deactivate() 및 PersonAccountRepository.Deactivate()를 호출하는 "Deactivate Person"프로세스가 있다고 가정합니다.
나는의 라인을 따라 뭔가를 할 수 있어야합니다 ..
using (ITransaction transaction = session.BeginTransaction()) {
session.Update(Person);
session.Update(PersonAddress);
session.Update(PersonAccount);
}
해당 업데이트의 전체 프로세스가 다시 데이터베이스 내에서 롤 것을 실패하는 경우가 그래서. 지금 NHibernate에 대한 나의 이해는 객체 당 세션만을 생성 할 수 있다는 것을 의미한다 ..
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Person).Assembly);
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
using (ISession session = sessionFactory.OpenSession()) {
using (ITransaction transaction = session.BeginTransaction()) {
session.Save(Person);
}
이게 맞습니까? 아니면 제가 잘못 생각합니까? NHibernate와 관련하여 다중 테이블 업데이트 및 트랜잭션에 관한 트랜잭션의 모범 사례는 무엇입니까?
미리 감사드립니다.
안녕하세요, 답변을 주셔서 감사합니다, 내 후속 질문입니다,이 TransactionService 효과적으로 하나의 다음 모든 트랜잭션 풀에 롤백됩니다 그래서 트랜잭션 풀 관리 관리 있습니까? 또는 여러 저장소에서 1 트랜잭션을 공유하는 방법이 있습니까? – David
스레드 당 트랜잭션이 있습니다. 물론 다른 병렬 트랜잭션은 다른 스레드에서 계속 수행됩니다. –