Dies sollte eine einfache Frage für den versierten EF-Benutzer sein.Zuordnung viele zu viele Beziehung mit Fremdschlüssel Referenz
Ich habe das folgende Schema (in meinem Kopf), wie die Beziehungen zwischen den Tabellen aussehen sollten.
[FooBar] [Foo] [Bar]
FooId PK,FK Id PK Id PK
BarId PK,FK BarId FK Name
IsRead Name Description
Description
Obwohl, wenn ich zu versuchen erzeugen das Schema mit EF Code zunächst die Beziehungen zwischen den Entitäten zu interpretieren nicht, wie ich sie habe interpretiert (fügt Fremdschlüssel FooId
zur [bar]
Tabelle) und schlägt fehl um die [FooBar]
Bridge-Tabelle vollständig zu erstellen.
Wenn mir jemand helfen könnte, das obige Schema mit dem EF4-Code zu erreichen, würde ich es begrüßen. Ob die Lösung mit Attributen auf meinen POCO-Modellen, mit fließenden Konfigurationen oder mit einem Hybrid aus beiden verbunden ist, spielt keine große Rolle - solange das gewünschte Datenbankschema erstellt wird.
POCO-Modelle:
public class Foo
{
public int Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
public int BarId { get; set; }
public Bar Bar { get; set; } /* bar entity */
public virtual ICollection<Bar> BridgedBars { get; set; }
public Foo()
{
Bars = new List<Bar>();
}
}
public class Bar
{
public int Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
public virtual ICollection<Foo> BridgedFoos { get; set; }
public Bar()
{
Foos = new List<Foo>();
BridgedFoos = new List<Foo>();
}
}
public class FooBar
{
public int FooId { get; set; }
public int BarId { get; set; }
public virtual Foo Foo { get; set; }
public virtual Bar Bar { get; set; }
public bool IsRead { get; set; }
}
Wie Sie Haben Sie eine Eigenschaft (IsRead) für die FooBar-Beziehung, die Sie wahrscheinlich aus dem Code setzen möchten, benötigen sowohl Foo als auch Bar die zugehörigen Sammlungen als FooBars. Sobald Sie Eigenschaften an beiden Enden (d. H. Die virtuellen Sammlungen in Foo und Bar) zu FooBar zuordnen, sollte EF die Beziehung korrekt erstellen. Verwenden Sie HasMany(). WithRequired(), um jede Klasse FooBar zuzuordnen. –