Ich habe ein ASP.NET MVC 5/C# -Projekt. In meinem Projekt habe ich zwei Modelle, Rule
und MenuItem
. MenuItem
hat einen Fremdschlüssel, der auf Rule
verweist. Und Rule
hat einen Fremdschlüssel, der MenuItem
verweist.Verwenden von Entity Framework, wie kann ich einen Fremdschlüssel auf zwei Modellen hinzufügen, um sich gegenseitig zu referenzieren
Paar Dinge erwähnenswert, mein Modell hat ein Präfix in der Modellbezeichnung. Außerdem verwende ich den ersten Ansatz der Datenbank. Hier erhalten werden auch in der Lage sein, die MenuItem mit der erforderlichen Regel erhalten können
Ich möchte mit .Include(...)
und ich möchte die Regeln mit dem MenuItem
meine Modelle sind
[Table("Rules")]
public class PrefixRule
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("Item")]
public int ModuleId { get; set; }
public string Name { get; set; }
public virtual PrefixMenuItem Item { get; set; }
}
[Table("MenuItems")]
public class PrefixMenuItem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("RequiredRule")]
public int? RequiredRuleId { get; set; }
public string Name { get; set; }
public virtual PrefixRule RequiredRule { get; set; }
}
jedoch wenn ich versuche, die Menü-Elemente, einschließlich der erforderlichen Regel zu ziehen, bekomme ich folgende Fehler
Eine oder mehrere Validierungsfehler während der Modell erkannt wurden Generation: MenuItem_RequiredRule_Target:: Die Multiplizität ist nicht gültig in der Rolle 'MenuItem_RequiredRule_Target' in der Beziehung 'MenuItem_RequiredRule'. Da die Eigenschaften der abhängigen Rolle nicht die Schlüsseleigenschaften sind, muss die obere Grenze der abhängigen Rolle '*' sein.
Ich glaube dieser Fehler aufgrund der kreisförmigen Referenzen zwischen meinen Modellen. Allerdings muss ich auf beide Eigenschaften zugreifen können.
Wie kann ich dieses Problem beheben?
Wo Ihre Primärschlüssel in Ihre Entitäten sind? 'Da die Eigenschaften der abhängigen Rolle nicht die Schlüsseleigenschaften sind ' – garethb
Ehm ein bisschen abseits des Themas, aber ich schlage vor, Sie verwenden Guids anstelle von Ints für IDs. https://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.110).aspx – StuiterSlurf