Mit den folgenden Eins-zu-Eins-Modellen, beide mit Navigationseigenschaften: -
%Vor%Foo hat einen optionalen Balken .
Leiste hat einen erforderlichen Foo .
Ich habe die folgende Zuordnung auf Balken : -
%Vor%Erzeugt den Fremdschlüssel in der Tabelle Bar mit dem Namen "FooId".
All dies funktioniert gut, außer dass es sql for Foo mit einem 'Left Outer Join' zu Bar bei allen Abfragen erzeugt, wenn es nicht benötigt wird.
%Vor%Bei genauerer Betrachtung wird nur die ID des Balkens zurückgegeben.
Suchen Stapel Ich kann die meisten Vorschläge sehen, um .WithMany
anstelle von% zu verwenden co_de%, aber ich brauche die Navigationseigenschaften.
Irgendwelche Vorschläge?
Dies ist das Standardverhalten für eine 1: 1-FK-Zuordnung und kann nicht vermieden werden. Was EF tut, ist, intern eine verborgene Eigenschaft (Schatten) wie int? BarId
für die Entität Foo
zu pflegen.
Die einzige Möglichkeit, LEFT OUTER JOIN
s loszuwerden und bidirektionale Navigationseigenschaften beizubehalten, ist, wenn Sie sich das Bar
Calls aus der fließenden Konfiguration:
In diesem Modell enthält die Tabelle Map
nicht die Spalte Bar
FK, sondern die PK-Spalte FooId
ist nicht mehr Identität und dient auch als FK-Referenzierung Id
table.
Dies erlaubt es EF nicht, ein Foo
in BarId
zu pflegen, da es weiß, dass wenn Foo
entspricht, es mit Bar
gleich Id
wäre.
Wenn Sie das Datenbankdesign nicht ändern können, haben Sie kein Glück mehr - Sie müssen entweder mit Foo.Id
s leben oder die Navigationseigenschaft LEFT OUTER JOIN
opfern und die Beziehung als unidirektionales Eins-zu-Viele konfigurieren wie du schon erwähnt hast.
Tags und Links c# entity-framework entity-framework-6