Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Relacionamento 1 para 0 ou 1 com várias Classes

Neste artigo:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

Diz que se eu tenho um relacionamento 1 para 0 ou 1 entre um Estudante e um Endereco o EF só precisa que no Estudante (quem tem) eu coloque um

public virtual StudentAddress Address { get; set; }

E no Endereco (quem é tido) só coloque

[ForeignKey("Estudante") 
public int EnderecoId { get; set; }

public virtual Estudante Estudante { get; set; }

E isso é suficiente para que o EF faça um relacionamento 1 para 0 ou 1 corretamente entre o Estudante e seu Endereco.

O exemplo do artigo não é muito bom, até por que não faz muito sentido colocar isso em duas tabelas, mas tudo bem, sigo a pratica dele para explicar meu problema:

Relacionamentos multiplos 1 - 0..1 do lado que é "TIDO"

Caixa tem um Usuario 1 -- 1 Recurso tem um Usuario 1 -- 1

Seguindo o modelo do artigo na classe Caixa (que tem) eu apenas colocaria public virtual Usuario Usuario { get; set; }

na classe Recurso (que tem) eu apenas colocaria public virtual Usuario Usuario { get; set; }

O problema é na classe Usuario (que é tida), eu teria de colocar

[Key, ForeignKey("Caixa"), ForeignKey("Recurso")]
public int UsuarioId { get; set; }

E não é possível duplicar uma Annotation sobre um mesmo atributo.

1 resposta
solução!

Jaqueline,

Na verdade penso que seja ao contrário. Na classe Caixa você cria uma propriedade

[Key, ForeignKey("Caixa")]
public int UsuarioId { get; set; }

E na classe Recurso a propriedade

[Key, ForeignKey("Recurso")]
public int UsuarioId { get; set; }

Tenta dessa forma. Abraço