아마 그렇게 쉽지는 않을지 모르지만 여기에 필자가 있습니다. 기본적으로 세션과 트랜잭션을 래핑하고 요청을 저장하고 요청이 끝나면 커밋 또는 롤백하는 작업 단위를 만듭니다.
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 이벤트에서 작업 단위를 처분 : 같은
public interface IUnitOfWork : IDisposable
{
ISession Session { get; }
void Commit();
void Rollback();
}
구현은 볼 수 있었다.
두 번째 링크는 매우 흥미 롭습니다. 너에게 다시 돌아갈 게. 지금까지 감사드립니다. Weston의 블로그는 – jhovgaard
+1입니다. – mxmissile
http://trason.net/journal/2009/10/14/nhibernate-transactional-boundaries.html 멋진 게시물이었습니다! :) – jhovgaard