1

Ich habe ein User.cs:2 Verweis auf gleiches Objekt im Objekt - Multiplicity ist in Rolle in die Beziehung nicht gültig

[Table("Users")] 
public class User : BaseUser, IBaseUser 
{ 
    [Key] 
    public override int Id { get; set; } 

    [ForeignKey("CreatedBy")] 
    public int CreatedById { get; set; } = 0; 

    public DateTime? CreatedOn { get; set; } 

    [ForeignKey("ModifiedBy")] 
    public int ModifiedById { get; set; } = 0; 

    public DateTime? ModifiedOn { get; set; } 


    public virtual User CreatedBy { get; set; } = null; 

    public virtual User ModifiedBy { get; set; } = null; 
    public bool IsDeleted { get; set; } = false; 
} 

Ich mag eine CreatedBy und ModifiedBy Navigationseigenschaft auf das Benutzerobjekt haben, erstellt und geändert dieses Benutzerobjekt.

Allerdings, wenn ich meine Anwendung starten, erhalte ich diesen Fehler auf meinem 'LogDb' (abgeleitet von DbContext) Database.Initialize (true) Funktionsaufruf:

User_ModifiedBy_Target: Multiplicity in Rollen nicht gültig 'User_ModifiedBy_Target' in der Beziehung 'User_ModifiedBy'. Da die Eigenschaften der abhängigen Rolle nicht die Schlüsseleigenschaften sind, muss die obere Grenze der Multiplizität der abhängigen Rolle '*' sein.

Ich habe eine Menge Dinge ausprobiert, aber kann nicht scheinen, das Ergebnis zu haben, das ich will.

Kann mir jemand in die richtige Richtung zeigen? (Wenn möglich, mit Daten Anmerkungen)

Antwort

0

Leider werden Sie müssen von Daten Anmerkungen Schritt entfernt dieses Bit tun:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<User>().HasRequired(u => u.CreatedBy).WithMany(); 
    modelBuilder.Entity<User>().HasRequired(u => u.ModifiedBy).WithMany(); 
} 

Sie können auch CreatedById und ModifiedById als int? definieren wollen, so können sie sein Nullable, oder Sie werden nie in der Lage sein, Ihren ersten Benutzer zu erstellen!