예제 #1
0
 public static void ShareDbConnection(IDbSessionFactory fact, Action act)
 {
     if (DbSession.Current != null)
     {
         act();
     }
     else
     {
         using (var ses = fact.OpenSession(MessageBusContext.ReceivingConnection))
         {
             DbSession.Current = ses;
             act();
             DbSession.Current = null;
         }
     }
 }
예제 #2
0
 public static void InDbTransaction(IDbSessionFactory factory, Action <DbSession> act)
 {
     if (DbSession.Current != null)
     {
         act(DbSession.Current);
     }
     else
     {
         var dbs = factory.OpenSession(MessageBusContext.ReceivingConnection);
         try
         {
             DbSession.Current = dbs;
             act(dbs);
         }
         finally
         {
             DbSession.Current = null;
             dbs.Dispose();
         }
     }
 }
예제 #3
0
 public static void ShareDbConnection(IDbSessionFactory fact, Action act)
 {
     if (DbSession.Current != null)
     {
         act();
     }
     else
     {
         var ses = fact.OpenSession(MessageBusContext.ReceivingConnection);
         try
         {
             DbSession.Current = ses;
             act();
         }
         finally
         {
             var s = DbSession.Current;
             DbSession.Current = null;
             Debug.Assert(s == ses);
             s.Dispose();
         }
     }
 }