Entity Framework Code Première installation plusieurs à plusieurs pour les tables existantes

J'ai les tableaux suivants EssenceEssenseSetet Essense2EssenceSet

Essense2EssenceSet est la table de liaison qui crée de la M:M relation.

J'ai été incapable d'obtenir le M:M relation de travail si en EF code mais d'abord.

Voici mon code:

[Table("Essence", Schema = "Com")]
public class Essence
{
public int EssenceID { get; set; }
public string Name { get; set; }
public int EssenceTypeID { get; set; }
public string DescLong { get; set; }
public string DescShort { get; set; }
public virtual ICollection<EssenceSet> EssenceSets { get; set; }
public virtual EssenceType EssenceType { get; set; }
}
[Table("EssenceSet", Schema = "Com")]
public class EssenceSet
{
public int EssenceSetID { get; set; }
public int EssenceMakerID { get; set; }
public string Name { get; set; }
public string DescLong { get; set; }
public string DescShort { get; set; }
public virtual ICollection<Essence> Essences { get; set; }
}
[Table("Essence2EssenceSet", Schema = "Com")]
public class Essence2EssenceSet
{
//(PK /FK)
[Key] [Column(Order = 0)] [ForeignKey("Essence")] public int EssenceID { get; set; }
[Key] [Column(Order = 1)] [ForeignKey("EssenceSet")] public int EssenceSetID { get; set; }
//Navigation
public virtual Essence Essence { get; set; }
public virtual EssenceSet EssenceSet { get; set; }
}
public class EssenceContext : DbContext
{
public DbSet<Essence> Essences { get; set; }
public DbSet<EssenceSet> EssenceSets { get; set; }
public DbSet<Essence2EssenceSet> Essence2EssenceSets { get; set; }
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<Essence>()
.HasMany(e => e.EssenceSets)
.WithMany(set => set.Essences)
.Map(mc =>
{
mc.ToTable("Essence2EssenceSet");
mc.MapLeftKey("EssenceID");
mc.MapRightKey("EssenceSetID");
});
}
}

C'est le code que j'essaie de l'exécuter:

    Essence e = new Essence();
e.EssenceTypeID = (int)(double)dr[1];
e.Name          = dr[2].ToString();
e.DescLong      = dr[3].ToString();
//Get Essence Set
int setID = (int)(double)dr[0];
var set = ctx.EssenceSets.Find(setID);
e.EssenceSets = new HashSet<EssenceSet>();
e.EssenceSets.Add(set);
ctx.Essences.Add(e);
ctx.SaveChanges();

Et voici l'erreur:

Une erreur s'est produite pendant la sauvegarde des entités qui ne sont pas exposer les propriétés de clés étrangères pour leurs relations. Le EntityEntries propriété renvoie la valeur null, car une seule entité ne peut pas être identifié comme la source de l'exception.

Je ne suis pas capable de trouver le problème. Je serais grandement apprécier aider à cette mise en place droite.
Merci!

source d'informationauteur user169867