هل تعرف كيفية تنفيذ المعاملات في Castle ActiveRecord؟

StackOverflow https://stackoverflow.com/questions/38729

  •  09-06-2019
  •  | 
  •  

سؤال

قررت إنشاء نظام يستخدمه العميل قلعة ActiveRecord, ، كل شيء سار على ما يرام حتى وجدت أن المعاملات لا تعمل، على سبيل المثال؛

               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();
               }

لكن الأمر لا ينجح، لقد قمت بطرح استثناء فقط لمحاولة إرجاع المعاملة، ولكن لدهشتي رأيت أن أول [حفظ] يسجل في قاعدة البيانات.ماذا يحدث؟

أنا جديد على Castle وNHibernate، في البداية رأيته جذابًا للغاية وقررت الاستمرار في استخدامه مع MySQL (لم أعمل مطلقًا مع قاعدة البيانات هذه)، لقد جربت ActiveWriter وبدا واعدًا جدًا ولكن بعد فترة طويلة ومجهودة بعد أسبوع أرى هذه المشكلة والآن أشعر أنني عالقة وكأنني أهدرت وقتي.من المفترض أن يكون الأمر سهلاً ولكن الآن أشعر بالإحباط لأنني لا أستطيع العثور على معلومات كافية لإجراء هذا التمرين، هل يمكنك مساعدتي؟

هل كانت مفيدة؟

المحلول

لقد حصل عليها بن.هذا المستند مربك بعض الشيء.الرجوع إلى الكتلة الأخيرة على الصفحة, ، "المعاملات المتداخلة".

نصائح أخرى

تحتاج إلى تغليف الكود في نطاق الجلسة، مثل هذا:

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

اقرأ أكثر هنا.

لقد أصلحت أخيرًا، لقد حدث أنني كنت أفعل خطأ، لقد تجاوزت طريقة الحفظ الخاصة بفئة الأعضاء وجعلت sessionScope بداخله وداخله نطاق معاملة، لذلك عندما يتضمن كل ذلك في نطاق معاملة يتم حفظه في قاعدة البيانات، لذلك عندما طرحت الاستثناء، تم حفظ كل شيء بالفعل، أعتقد أن هذا كل شيء.

على العموم، شكرا للمساعدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top