Je n'ai pas été en mesure de trouver une réponse à ce problème spécifique, peut-être à ma nouveauté avec Entity FrameworkEF 6 API Courant avec un à plusieurs et beaucoup à multiplicités De nombreux et contradictoires
J'ai deux entités: l'utilisateur et installation.
La table Facility requiert un propriétaire (utilisateur), mais une Facility peut également avoir plusieurs «FacilityUsers» assignés à une Facility.
public class User
{
....
public virtual ICollection<Facility> Facilities { get; set; }
}
public Facility Facility
{
public Guid OwnerId { get; set; }
...
public virtual User Owner { get; set; }
public virtual ICollection<User> FacilityUsers { get; set; }
}
Voici mon ModelBuilder
////Many To Many: Users To Facilities
modelBuilder.Entity<User>()
.HasMany(i => i.Facilities)
.WithMany(u => u.FacilityUsers)
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("FacilityId");
m.ToTable("UserFacility");
});
//One to Many: Facility To Owner
modelBuilder.Entity<Facility>()
.HasRequired<User>(s => s.Owner)
.WithMany(s => s.Facilities)
.HasForeignKey(k => k.OwnerId);
Le problème est, quand j'ai la carte Facility au propriétaire, je reçois l'erreur suivante: La propriété de navigation 'FacilityUsers' a déclaré le type ' MEH.Web.Models.Entities.Facility 'a été configuré avec des multiplicités conflictuelles.
Cependant, lorsque j'exclus le Facility au propriétaire de mappage, cela fonctionne.
//One to Many: Facility To Owner
//modelBuilder.Entity<Facility>()
// .HasRequired<User>(s => s.Owner)
// .WithMany(s => s.Facilities)
// .HasForeignKey(k => k.OwnerId);
Le problème est, la installations table a alors un Owner_UserId champ qui est nul, mais il est rempli correctement le OWNERID. Mon TOC ne me laisse pas passer à autre chose jusqu'à ce que j'ai résolu le problème "Owner_UserId".
Merci, D
Merci beaucoup !!! Je devais ajouter **. WillCascadeOnDelete (false) ** aussi. –