main
1using gorilla.commons.utility;
2using ISession = NHibernate.ISession;
3using ITransaction = NHibernate.ITransaction;
4
5namespace presentation.windows.server.orm.nhibernate
6{
7 public class NHibernateUnitOfWork : IUnitOfWork
8 {
9 readonly ISession session;
10 readonly IContext context;
11 ITransaction transaction;
12
13 public NHibernateUnitOfWork(ISession session, IContext context)
14 {
15 this.session = session;
16 this.context = context;
17 transaction = session.BeginTransaction();
18 }
19
20 public void Dispose()
21 {
22 if (!transaction.WasCommitted && !transaction.WasRolledBack)
23 {
24 transaction.Rollback();
25 }
26 session.Dispose();
27 context.remove(new TypedKey<ISession>());
28 }
29
30 public void commit()
31 {
32 if (is_dirty()) transaction.Commit();
33 }
34
35 public bool is_dirty()
36 {
37 return session.IsDirty();
38 }
39 }
40}