سؤال

لدي تسلسل هرمي للجداول 3 مستويات عميقة (QualificaionType يحتوي على العديد من مجموعات التأهيلات، والتي تحتوي على العديد من المؤهلات) المعينة مثل هذا:

// QualificationType
HasMany(x => x.QualificationGroups)
    .Inverse()
    .KeyColumns.Add("QualificationGroupId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

// Qualification Group
HasMany(x => x.Qualifications)
    .Inverse()
    .KeyColumns.Add("QualificationId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

عندما أحذف مجموعة مؤهلات، فإنه يحذف جميع المؤهلات المتعلقة به. ولكن عندما أحاول حذف نوع مؤهل، فإنه يحاول حذف جميع مجموعات التأهيل ذات الصلة ولكن ليس مؤهلاتها.

كيف يمكنني الحصول عليها على التلال على طول الطريق حتى إذا قمت بحذف نوع، فهذا يحذف جميع المجموعات وجميع مؤهلاتهم؟ هل أحتاج إلى حلقة من خلال جميع المجموعات أولا وحذفها؟ يبدو أن هذا يجب أن يكون قادرا على التعامل مع التعيينات وحدها.

لمعلوماتك، أنا أستخدم nhibernate بطلاقة 1.0RTM و NHIBERNATE 2.1

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

المحلول

احسبت ذلك ... كانت التعيينات غير صحيحة.

يجب أن يكون هذا:

// QualificationType
HasMany(x => x.QualificationGroups)
    .Inverse()
    .KeyColumn("QualificationTypeId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

// Qualification Group
HasMany(x => x.Qualifications)
    .Inverse()
    .KeyColumn("QualificationGroupId")
    .AsBag()
    .Cascade.AllDeleteOrphan()
    .Access.CamelCaseField(Prefix.Underscore);

كان لدي عمود رئيسي خاطئ في كل منهما.

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