سؤال

أنا أعمل مع EF4.1 Code First وأحاول إنشاء بعض جداول العلاقات من متعدد إلى متعدد حيث يلزم ربط الجداول.يرجى الاطلاع على مقتطف صغير من الكود أدناه:

class Event
{
    int EventId { get; set; }
    ICollection<Contact> Contacts { get; set; }
}

class Contact
{
    int ContactId { get; set; }
    ICollection<Relation> Relations { get; set; }
}

class Relation
{
    int RelationId { get; set; }
    string Name { get; set; }
}   

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

أحتاج إلى تتبع نوع ما من الأحداث التي حضرتها جهة اتصال، ولكنني أريد أن أعرف مدى ارتباطه بالشخص الذي يستضيف الحدث.على سبيل المثال، هل كان هو أخ الحدث أو الأب أو الزوج؟في حدث آخر، يمكن أن يظهر نفس الشخص، لكنه يكون صهر الحدث.

الحدث المراد الاتصال به هو متعدد إلى متعدد؛العلاقة مع الاتصال هي واحد لكثير.

في SQL، قمنا بإنشاء جدول ارتباطات ولدينا معرفات الخصائص الثلاثة هناك (EventId، ContactId، RelationId)؛ومع ذلك، في Code First، كيف تمثل هذه العلاقة؟

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

المحلول

تمامًا مثل قاعدة البيانات، يجب عليك إنشاء كيان تعيين تمامًا مثل ContactEvents مثل جدول التعيين في قاعدة البيانات.

class Event
{
  int EventId { get; set; }
  ICollection<ContactEvent> ContactEvents { get; set; }
}

class ContactEvent
{
  int EventId {get;set;}
  int ContactId {get;set;}
  public virtual Event Event {get; set;}
  public virtual Contact Contact {get;set;}
}

class Contact
{
   int ContactId { get; set; }
   ICollection<ContactEvent> ContactEvents { get; set; }
   ICollection<Relation> Relations { get; set; }
}

class Relation
{
  int RelationId { get; set; }
  string Name { get; set; }
  public virtual Contact Contact {get; set}
}   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top