Question

Je travaille en premier avec EF4.1 Code et j'essaie de créer des tables de relations nombreuses à plusieurs personnes où des tables devraient être liées.S'il vous plaît voir Petit extrait de code Beloow:

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

Ainsi, l'objet Contacts peut avoir de nombreux types de relations différents, tels que «mère», «père», «frère», etc.

J'ai besoin de suivre une sorte d'événement où un contact assisté, mais je veux savoir comment il est lié à la personne qui accueille l'événement.Alors, par exemple, était-il le frère, le père ou son mari de l'événement?Dans un autre événement, la même personne pourrait se présenter, mais être le beau-frère de l'événement.

L'événement au contact est plusieurs à plusieurs;La relation avec le contact est un à plusieurs.

Dans SQL, nous venons de faire une table de liaison et de toutes les trois propriétés d'identifiant (Econid, contacté, RelationID);Cependant, dans le code d'abord, Comment allez-vous représenter cette relation?

Était-ce utile?

La solution

Même chose que la base de données, vous devez créer une entité de mappage comme des contacts tels que la table de mappage dans la base de données.

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}
}   

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top