Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 22nd, 2012  |  syntax: None  |  size: 0.77 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Scoping transactions and sessions in NHibernate for long running tasks
  2. var subscribers = _session
  3.     .QueryOver<Subscription>()
  4.     .Where(s => !s.HasReceivedNewsletter)
  5.     .List();
  6.  
  7. foreach (var subscriber in subscribers)
  8. {
  9.     SendNewsletterTo(subscriber);
  10.     subscriber.HasReceivedNewsletter = true;
  11. }
  12.        
  13. foreach (var subscriber in subscribers)
  14. {
  15.     using (var txn = _session.BeginTransaction())
  16.     {
  17.         try
  18.         {
  19.             SendNewsletterTo(subscriber);
  20.             subscriber.HasReceivedNewsletter = true;
  21.             txn.Commit();
  22.         }
  23.         catch (Exception ex)
  24.         {
  25.             txn.Rollback();
  26.             // log exception, clean up any actions SendNewsletterTo has taken if needed
  27.             // Dispose of session and start over
  28.         }  
  29.     }
  30. }