2008-09-02 19 views
4

Castle ActiveRecord kullanarak bir istemci için bir sistem yapmaya karar verdim, her şeyin iyi gitmediğini, ancak işlemlerin işe yaramadığını fark ettim;Castle ActiveRecord'daki işlemleri nasıl uygulayacağınızı biliyor musunuz?

   TransactionScope t = new TransactionScope(); 

       try 
       { 
        member.Save(); 

        //This is just to see transaction working 
        throw new Exception("Exception"); 

        foreach (qfh.Beneficiary b1 in l) 
        { 
         b1.Create(); 
        } 


       } 
       catch (Exception ex) 
       { 

        t.VoteRollBack(); 
        MessageBox.Show(ex.Message); 
       } 
       finally 
       { 
        t.Dispose(); 
       } 

Ama çalışmıyor, sadece işlem geri alır denemek için bir özel durum atmak, ama benim sürpriz için ilk [Kaydet] veritabanına kaydeder görüyoruz. Ne oluyor?

Kale ve NHibernate'de yeniyim, ilk olarak çok çekici gördüm ve onunla devam etmeye karar verdim ve MySQL (Bu DB ile hiç çalışmadım), ActiveWriter'i denedim ve çok umut verici görünüyordu ama uzun ve çaba gerektiren bir hafta bu sorunu görüyorum ve şimdi sıkışıp kaldım ve zamanımı harcadım gibi hissediyorum. Kolay olması gerekiyordu ama şu anda bu işe yaramaya yetecek kadar bilgi bulamıyorum, bu yüzden bana yardım edebilir misin?

cevap

3

Bende var. Bu doktor biraz kafa karıştırıcı. Son satır on the page, "İç içe geçmiş işlemler".

5

Böyle bir oturum kapsamında kod kaydırmak gerekir:

using(new SessionScope()) 
{ 
    a.Save(); 
    b.Save(); 
    c.Save(); 
} 

here daha okuyun.

0

Sonunda giderdim, yanlış yaptığım oldu, Üye sınıfının Kaydet yöntemini geçersiz kıldım ve oturumun içinde ve içinde bir oturum kapsamı yaptım, böylece bir işlem kapsamındaki tüm bunları kaydettiğinde veritabanında, istisna attığımda her şey zaten kaydedildi, sanırım bu kadar.

Yardım için teşekkürler.