0

Ich habe eine Entität, die sich in einer Eltern-Kind-Beziehung auf sich selbst bezieht. Ich muss herausfinden, wie man dies unter Verwendung der ersten und flüssigen API implementiert. Unten ist meine Entitätsklasse.Wie erstellt man eine selbstreferenzierende Tabelle mit Code zuerst?

public class MenuItem 
{ 
    public int Id { get; set; } 
    public string LinkText { get; set; } 
    public string ControllerName { get; set; } 
    public string ActionName { get; set; } 

    public MenuItem Parent { get; set; } 
    public int ParentId { get; set; } 

    private IList<Role> Roles; 
    private IList<MenuItem> ChildMenuItems; 

    public MenuItem() 
    { 
     Roles = new List<Role>(); 
     ChildMenuItems = new List<MenuItem>(); 
    } 
} 

Ich habe versucht, den folgenden Code in meiner Entität Konfiguration.

HasOptional(m => m.Parent) 
       .WithMany(m => m.ChildMenuItems) 
       .HasForeignKey(m => m.ParentId) 
       .WillCascadeOnDelete(false); 

aber ich habe diesen Fehler -

Eine oder mehrere Validierungsfehler während der Modellerzeugung erfasst wurden:

Vantage.Data.EF.MenuItem_Parent: Multiplicity Konflikte mit der Referenzbedingung in der Rolle 'MenuItem_Parent_Target' in der Beziehung 'MenuItem_Parent'. Da alle Eigenschaften in der abhängigen Rolle " " nicht nullfähig sind, muss die Multiplizität der Hauptrolle "1" sein.

Alle Hilfe geschätzt.

Vielen Dank.

Antwort

0

Das ParentId-Feld sollte nullfähig sein. Sie können keinen Datensatz erstellen, wenn parentid erforderlich ist.

Ändern Sie einfach public int ParentId { get; set; }

-public int? ParentId { get; set; }

Verwandte Themen