je les deux entités suivantes (parmi d'autres, mais ceux-ci me donnent le problème)EF 4.1 Code de première clé étrangère ajoute colonne supplémentaire
public class StartPoint
{
public int StartPointId { get; set; }
public string Description { get; set; }
public int StartPointNumber { get; set; }
public int StartAreaId { get; set; }
public StartArea StartArea { get; set; }
}
et
public class StartArea
{
public int StartAreaId { get; set; }
public string Description { get; set; }
public ICollection<StartPoint> StartPoints { get; set; }
}
Lorsque vous autorisez EF pour créer mon base de données, il s'est plaint que j'avais besoin de désactiver la suppression en cascade à cause de plusieurs chemins, ce que j'ai fait comme suit.
modelBuilder.Entity<StartPoint>()
.HasRequired(x => x.StartArea)
.WithMany()
.HasForeignKey(x => x.StartAreaId)
.WillCascadeOnDelete(false);
Le problème est, lorsque la base de données est créée, je reçois deux clés étrangères, on est appelé StartAreaId, comme je l'attendre, et l'autre est StartArea_StartAreaId. Seul StartAreaId est en cours d'utilisation. Pourquoi et comment puis-je me débarrasser de StartArea_StartAreaId? Si je supprime HasForeignKey dans le contexte et supprime le StartAreaId de l'entité, j'obtiens plusieurs colonnes StartArea_StartAreaId, comme dans StartArea_StartAreaId et StartArea_StartAreaId1. Que dois-je faire pour empêcher cela de se produire? Je veux juste StartAreaId comme ma clé étrangère.
Eh oui, bien sûr, ne sais pas pourquoi je ne pensais pas que cela. Je vous remercie. – Dirk
Merci Ladislav! Bénéficié de vos nombreuses réponses, y compris celle-ci. Seule l'observation est, ce problème est intermittent (mon collègue n'a pas été obligé de fournir quelque chose dans WithMany, mais je devais le faire. (Vous méritez MVP sur EF :)) –