Pergunta

Estou trabalhando com o EF4.1 Code First e estou tentando criar algumas tabelas de relacionamento muitos para muitos onde as tabelas precisariam ser vinculadas.Por favor, veja um pequeno trecho de código abaixo:

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

Portanto o objeto Contatos pode ter diversos tipos de Relacionamento, como “Mãe”, “Pai”, “Irmão”, etc.

Preciso rastrear algum tipo de Evento onde um Contato participou, mas quero saber como ele se relaciona com o anfitrião do Evento.Então, por exemplo, ele era irmão, pai ou marido do Eventer?Em outro evento a mesma pessoa poderá comparecer, mas ser o cunhado do Eventista.

O evento a ser contatado é muitos para muitos;A relação com o contato é um para muitos.

No SQL, faríamos apenas uma tabela de links e teríamos todos os três IDs de propriedades (EventId, ContactId, RelationId);no entanto, no Code First, como você representaria esse relacionamento?

Foi útil?

Solução

Assim como o banco de dados, você deve criar uma entidade de mapeamento, assim como ContactEvents, como tabela de mapeamento no banco de dados.

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}
}   
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top