일정한 전환을 포함한 요청 당 구조적/nhibernate 세션
-
08-07-2019 - |
문제
방금 MVC 앱에서 StructureMap을 사용하기 시작했고 모든 것이 잘 진행됩니다. ITranscation
올바른 방법.
내가하고 싶은 것은 각 요청마다 새로운 issession을 만드는 것입니다. 이것과 함께 나는 혈통을 시작하고 싶습니다.
요청이 끝날 무렵에 나는 트랜스 시테이션을 커밋 할 것입니다.
내 질문은, 구조 맵으로 가장 좋은 방법을 어떻게 할 수 있습니까? Google에서 많은 예를 찾았지만 그 중 어느 것도 요청에 따라 트랜스케이션을 시작하지 않으며 실제로 내 방법 에서이 작업을 수행하고 싶지 않습니다.
미리 감사드립니다!
다른 팁
아마도 쉽지는 않지만 여기 내 테이크가 있습니다. 기본적으로 세션과 트랜잭션을 랩핑하는 작업 단위를 만들고 요청이 끝나면 요청 및 커밋 또는 롤백을 위해 저장하십시오.
public interface IUnitOfWork : IDisposable
{
ISession Session { get; }
void Commit();
void Rollback();
}
그런 다음 구현은 다음과 같습니다.
public class UnitOfWork : IUnitOfWork
{
private readonly ITransaction _tx;
public ISessionFactory SessionFactory { get; set; }
public UnitOfWork()
{
SessionFactory = ObjectFactory.GetNamedInstance<ISessionFactory>(Keys.SessionFactoryName);
Session = SessionFactory.OpenSession();
_tx = Session.BeginTransaction();
}
public UnitOfWork(ISessionFactory sessionFactory)
{
SessionFactory = sessionFactory;
Session = SessionFactory.OpenSession();
_tx = Session.BeginTransaction();
}
public ISession Session { get; private set; }
public void Commit()
{
if (_tx.IsActive)
_tx.Commit();
}
public void Rollback()
{
_tx.Rollback();
}
}
Endrequest에서 작업 단위를 처분하십시오.
제휴하지 않습니다 StackOverflow