Domanda

Sto lavorando prima con il codice EF4.1 e sto cercando di creare alcune tabelle di relazione a molti-to-molti in cui le tabelle dovrebbero essere collegate.Si prega di vedere piccolo snippet di codice 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; }
}   
.

Quindi l'oggetto dei contatti può avere molti tipi diversi di relazione, come "madre", "padre", "fratello", ecc.

Ho bisogno di tenere traccia di qualche tipo di evento in cui un contatto ha partecipato, ma voglio sapere come è legato alla persona che ospita l'evento.Quindi, per esempio, è stato il fratello, il padre o il marito di Evencer?In un altro evento, la stessa persona potrebbe presentarsi, ma essere il cognato di Eventer.

Evento a contatto è molti-a-molti;La relazione con il contatto è uno a molti.

In SQL, abbiamo appena fatto una tabella di collegamento e avremmo solo una tabella di collegamento e avremmo tutte le tre proprietà dell'ID (EventId, Contactid, RelationID);Tuttavia, in codice prima, come rappreseneresti questa relazione?

È stato utile?

Soluzione

Come il database devi creare un'entità di mappatura proprio come i contapaventi come la tabella di mappatura nel database.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top