يتتالي في (ن) السبات، ما القواعد التي أحتاجها؟
-
19-09-2019 - |
سؤال
آسف إذا كان هذا هو Dupe، لم أستطع العثور عليه ولكن لم يعرف حقا ما هو البحث عنه، على أي حال ...
لدي ثلاث فصول، Parent
, Child
و Other
Parent
لديه الكثير Child
حيث الطفل لديه Parent_Id
عمودي
Other
يحمل إشارة إلى Child
من خلال Child_Id
عمودي
عندما أحذف Parent
, ، أريد أيضا حذف جميع المرتبطة Child
أشياء. اذا هذا Child
تتم الإشارة إلى الكائنات من قبل أي Other
الفصول، أريد بهم ( Other
أشياء) Child_Id
المراجع لإلغاء الملذ.
ما قواعد تتالي أحتاجها على العلاقات؟
أيضا، سوف تحدد كيانات التحديث في الذاكرة وكذلك في قاعدة البيانات؟
أي إذا كان لدي مجموعة من Parent
, Child
و Other
في الذاكرة (أي تحميلها من DB، وليس عابرا) وأخبر NH لحذف Parent
, ، ماذا سيحدث؟ أفترض ذلك Parent
و Child
سوف تصبح الكائنات عابرة؟ ماذا سيحدث ل Child
خاصية أي Other
أشياء؟
تحرير: عند استخدام All-Delete-Orphan، ما هي كائن كائن مثل الأيتام؟ في المثال أعلاه، هو Child
يتيم إذا كان والدها Parent
يتم حذف؟ هل المرجع من Other
المسألة عند النظر في كيان أثناء الزيت؟
شكرا
المحلول
لا يقوم NH بتحديث أي من كياناتك في الذاكرة (باستثناء المعرفات والإصدارات). NH ليست مسؤولة عن إدارة علاقات كياناتك. يستمر فقط ما قمت به في الذاكرة إلى قاعدة البيانات.
من وجهة النظر هذه، يجب أن تصبح أسهل في فهمها.
cascade="delete"
يعني أنه عندما يتم حذف الوالد، يتم حذف الطفل أيضا.cascade="delete-orphan"
يعني، أنه بالإضافة إلى ذلك، يتم حذف الطفل إذا لم يشير أحد الوالدين إلى ذلك بعد الآن. هذا، بالطبع، يعمل فقط إذا كان الطفل في الجلسة.
مثيل المحذوف يحصل على الذاكرة. المراجع إلى المثيل العابر (من Other
) سوف يسبب استثناء. AFAIK، تحتاج إلى إزالة الرجوع إلى المثيلات المحذوفة بنفسك. ربما يمكنك جعلها ضمنية من خلال بعض الحيل، لكنني أشك في أن هذا سيكون نظيفا. إنه منطق الأعمال.
لعلاقات الوالدين والطفل، cascade="all-delete-orphan"
انه لائق.
للحصول على مرجع منتظم أنا أفضل cascade="none"
.