Créer une clé étrangère à l'aide d'annotations de données
-
20-12-2019 - |
Question
Dans le code ci-dessous, je dois définir une constante de clé étrangère sur ParentInfoAddProperties.ParentQuestionAnswersId afin qu'elle dépende de ParentQuestionAnswers.Id (qui est une clé primaire).J'essaie de le faire en utilisant des annotations de données, mais Entity Framework 6 souhaite créer une nouvelle colonne de clé étrangère dans ma table ParentQuestionAnswers qui fait référence à la colonne ParentInfoAddProperties.Id et non à la colonne ParentInfoAddProperties.ParentQuestionAnswersId.Je ne veux pas qu'Entity Framework crée une nouvelle colonne de clé étrangère.
J'apprécierais grandement que quelqu'un puisse expliquer quelles annotations de données ou (si nécessaire) mappages fluides je devrais spécifier pour obtenir la constante de clé étrangère souhaitée.Merci d'avance.
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; }
}
}
La solution
Vous pouvez utiliser l'annotation de données suivante et utiliser l'entité au lieu de l'int
[Required]
[ForeignKey("ParentQuestionAnswers")]
public ParentQuestionAnswers ParentQuestionAnswers { get; set; }
pour obtenir l'identifiant seulement, vous pouvez ajouter la propriété
public int ParentQuestionAnswersId { get; set; }
mais tu as toujours besoin du ParentQuestionAnswers
propriété pour que EF vous comprenne.
(ces lignes de code doivent être sous le ParentInfoAddProperties
classe)
Autres conseils
Ajouter le
[KeyAttribute]
à la colonne ID
et
[ForeignKeyAttribute]
à la propriété parentQuQueVerswersid.