Ich habe nicht in der Lage gewesen, eine Antwort auf dieses spezifische Problem zu finden, vielleicht zu meiner Neuheit mit Entity FrameworkEF 6 Fluent API mit einer zu viele, und viele, viele und widersprüchlichen Multiplizitäten
Ich habe zwei Entitäten: User und Einrichtung.
Die Facility-Tabelle erfordert einen Eigentümer (Benutzer), aber einer Einrichtung können auch viele "FacilityUsers" einer Einrichtung zugewiesen werden.
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; }
}
Hier ist meine 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);
Das Problem ist, wenn ich die Karte Facility Besitzer haben, bekomme ich folgende Fehlermeldung: Die Navigationseigenschaft ‚FacilityUsers‘ erklärt vom Typ ' MEH.Web.Models.Entities.Facility 'wurde mit widersprüchlichen Multiplizitäten konfiguriert.
Allerdings, wenn ich die Einrichtung zu Owner Zuordnung ausschließen, funktioniert es.
//One to Many: Facility To Owner
//modelBuilder.Entity<Facility>()
// .HasRequired<User>(s => s.Owner)
// .WithMany(s => s.Facilities)
// .HasForeignKey(k => k.OwnerId);
Das Problem ist, hat die Einrichtungen Tabelle dann ein Owner_UserId Feld, das null ist, aber die ownerID korrekt ausgefüllt ist. Mein OCD lässt mich nicht bewegen, bis ich beschlossen haben das "Owner_UserId" Problem.
Danke, D
Vielen Dank !!! Ich musste **. WillCascadeOnDelete (false) ** hinzufügen. –