Neste artigo:
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.