Criar Chave Estrangeira usando Anotações de Dados
-
20-12-2019 - |
Pergunta
No código abaixo, eu preciso definir uma chave estrangeira constrant no ParentInfoAddProperties.ParentQuestionAnswersId, de modo que ele é dependente ParentQuestionAnswers.Id (que é uma Chave Primária).Eu estou tentando fazer isso usando data annotations, mas o Entity Framework 6 quer criar uma nova coluna de Chave Estrangeira na minha ParentQuestionAnswers tabela que referencia o ParentInfoAddProperties.Coluna de identificação não o ParentInfoAddProperties.ParentQuestionAnswersId coluna.Eu não quero Entity Framework para criar uma nova coluna de chave estrangeira.
Eu apreciaria muito se alguém pode explicar o que anotações de dados ou (se necessário) fluente mapeamentos eu deveria especificar para alcançar o desejado de chave estrangeira constrant.Obrigado antecipadamente.
namespace Project.Domain.Entities
{
public class ParentQuestionAnswers
{
public ParentQuestionAnswers()
{
ParentInfoAddProperties = new ParentInfoAddProperties();
}
[Required]
public int Id { get; set; }
[Required]
public int UserId { get; set; }
public ParentInfoAddProperties ParentInfoAddProperties { get; set; }
}
public class ParentInfoAddProperties
{
[Required]
public int Id { get; set; }
[Required]
public int ParentQuestionAnswersId { get; set; }
}
}
Solução
Você poderia usar a seguinte anotação de dados, e utilizar entidade em vez de int
[Required]
[ForeignKey("ParentQuestionAnswers")]
public ParentQuestionAnswers ParentQuestionAnswers { get; set; }
para obter o Id só você pode adicionar a propriedade
public int ParentQuestionAnswersId { get; set; }
mas você ainda precisa do ParentQuestionAnswers
propriedade, de modo que a EF vai entender você .
(essas linhas de código deve estar sob a ParentInfoAddProperties
classe)
Outras dicas
Adicione o
[KeyAttribute]
para a coluna Id
e
[ForeignKeyAttribute]
para o ParentQuestionAnswersId propriedade.