سؤال

لدي سؤال قد يكون أكثر من التفكير في هذه النقطة ولكن هنا يذهب...

لدي 2 فئات المستخدمين والمجموعات.المستخدمين والمجموعات وغيرها من العلاقة كنت أفكر أن الانضمام إلى طاولة group_users أردت أن يكون IsAuthorized الملكية (لأن بعض المجموعات الخاصة -- المستخدمين سوف تحتاج إلى تفويض).

تنصحين خلق فئة من أجل الانضمام إلى الجدول وكذلك المستخدم ومجموعات الجدول ؟ حاليا دروسي تبدو مثل هذا.

public class Groups
{
    public Groups()
    {
        members = new List<Person>();
    }
    ...
    public virtual IList<Person> members { get; set; }
}

public class User
{


    public User()
    {
       groups = new Groups()
    }
    ...
    public virtual IList<Groups> groups{ get; set; }

}

بلدي التعيين مثل التالية في كل من الفئات (أنا فقط عرض واحد في المستخدمين رسم الخرائط لكنها متشابهة جدا):

HasManyToMany<Groups>(x => x.Groups)
.WithTableName("GroupMembers")
.WithParentKeyColumn("UserID")
.WithChildKeyColumn("GroupID")
.Cascade.SaveUpdate();

يجب أن أكتب فئة من أجل الانضمام إلى الجدول الذي يبدو مثل هذا ؟

public class GroupMembers
{
    public virtual string GroupID { get; set; }
    public virtual string PersonID { get; set; }
    public virtual bool WaitingForAccept { get; set; }
}

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

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

المحلول

عموما أنا فقط مثل إنشاء الطبقات التي تمثل الفعلية الكيانات التجارية.في هذه الحالة لا أعتقد أن 'groupmembers' يمثل أي شيء ذو قيمة في التعليمات البرمجية الخاصة بك.لي ORM أن خريطة قاعدة البيانات الخاصة بك الأعمال الكائنات.وهذا يعني أن الطبقات لم يكن لديك بالضبط مرآة قاعدة بيانات التخطيط.

أيضا وأظن أنه من خلال تنفيذ GroupMembers, سوف ينتهي بك الأمر مع بعض سيئة مجموعات في كل من المستخدم الخاص بك و مجموعة دروس.I. E.المجموعة فئة لديها قائمة من المستخدمين و أيضا قائمة groupmembers التي مراجع المستخدم والعكس صحيح بالنسبة للمستخدم الدرجة.بالنسبة لي هذا ليس نظيف و سيجعل من الصعب الحفاظ على نشر التغييرات إلى الجداول.

أود أن أقترح إبقاء الانضمام إلى جدول في قاعدة البيانات كما اقترحت إضافة قائمة مجموعات تسمى waitingtoaccept في المستخدمين (إذا كان من المنطقي جدا) إضافة قائمة مستخدمي يسمى waitingtoaccept في مجموعات.

هذه ثم سحب قيمها من الانضمام إلى جدول في قاعدة البيانات على أساس waitingtoaccept العلم.

نصائح أخرى

نعم, بالتأكيد تحتاج فئة أخرى مثل UserGroupBridge.جيد آخر الآثار الجانبية هو أنه يمكنك تعديل المستخدم عضوية أعضاء المجموعة بدون تحميل يحتمل الثقيل المستخدم/المجموعة الكائنات NHibernate الدورة.

الهتافات.

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