J'ai recherché les questions déjà répondues mais je n'ai trouvé aucune réponse à mon problème. Honte sur moi.Code EF - Première clé composite de "Navigation"
J'ai cette situation:
public class Content
{
[Key]
[StringLength(36, ErrorMessage="Must have 36 characters")]
[Required(ErrorMessage="Must have a unique GUID")]
public string GUID { get; set; }
public virtual ICollection<RegionalInfo> RegionalInfo { get; set; }
}
public class RegionalInfo
{
[Key]
public virtual Content Content { get; set; }
[Key]
public virtual Region Region { get; set; }
}
public class Region
{
[Key]
[StringLength(5, ErrorMessage="ID must have 5 characters")]
[Required]
[RegularExpression(@"[a-z]{2}-[A-Z]{2}", ErrorMessage = "ID must be in ISO 639 standard")]
public string ID { get; set; }
public string Country { get; set; }
public string Language { get; set; }
}
Mais je ne peux pas obtenir ce travail. EF indique que "RegionalInfo n'a pas de clé définie". Pour être bref, j'essaye de faire une clé composée sur cette classe "RegionalInfo" qui inclut le Content.GUID et le Region.ID.
Pour chaque contenu UNIQUE unique de la table Contents, de nombreuses "Traductions" existeront dans la table RegionalInfo.
Est-ce code sur la classe de contexte nécessaire pour que la clé composite fonctionne? Cela évitera-t-il la vérification unique sur une seule colonne qui intègre la clé composite et ne vérifie que les deux colonnes? – programad
En ce qui concerne votre première question, j'ai essayé moi-même hier: pour le HasKey() c'était nécessaire dans mon cas. Sans cela, j'ai toujours l'exception "RegionalInfo n'a pas de clé définie". La ligne HasRequired() dont je ne suis vraiment pas sûre. J'ai copié cela à partir d'une situation similaire que j'ai aussi (une entité Image, une entité Gallery et une entité ImageGallery où Gallery détient une collection d'images). En ce qui concerne votre deuxième question, dans la table RegionalInfo, une clé primaire sera générée, comprenant à la fois ContentId et RegionId, de sorte que combo est unique, pas une seule colonne. –