Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Mapeamento com Entity

Boa noite, Marcelo Oliveira! Será que você pode me ajudar com um mapeamento code first? Aproveitei sua base de dados para estudar. Estou começando a desenvolver um projeto em C# utilizando a arquitetura DDD. Consegui mapear todas entidades, exceto a de Funcionário com Cliente. Deixa eu ver se entendi: A chave estrangeira de Funcionário em Cliente é "SeReportaA" Correto? Se for beleza! Mas como mapear com fluent api (Code First) a entidade Funcionário já que ela possui uma FK que é "SeReportaA" e que está na própria entidade?

Agradeço desde já.

2 respostas
solução

Olá, Ivanostik!

Olhando a base de dados, a gente vê que a tabela Funcionario contém uma referência a ela mesma (uma auto-referência):

CONSTRAINT [FK_FuncionarioSeReportaA] FOREIGN KEY ([SeReportaA]) REFERENCES [dbo].[Funcionario] ([FuncionarioId])

Para gerar essa chave estrangeira via Code First, você precisa adicionar ao modelo Funcionario uma propriedade chamada SeReportaA, do tipo Funcionario :

public class Funcionario 
{
    ...
    public virtual Funcionario SeReportaA { get; set; }
    ...
}

Se você não se incomodar para o nome no banco de dados, esse código irá criar uma coluna chamada SeReportaAId, e não SeReportaA. Agora, se você quiser mesmo que a coluna seja SeReportaA você tem que fazer um pouco diferente:

public class Funcionario 
{
    ...
    public virtual int SeReportaA { get; set; }

    [ForeignKey("SeReportaA")]
    public virtual Funcionario SeReportaAFuncionario { get; set; }
    ...
}

Boa sorte e bons estudos!

Obrigado!