Ich verwende Linq zu Entitäten, die einen Table per Type Ansatz anwenden. Das ist bisher sehr gut gelaufen. Ich habe folgendes Setup:Linq zu Entitäten, Tabelle pro Typ und nullable Fremdschlüsselbeziehungen
- Geordnete Tabelle
- Child Table (Erbt von den Eltern)
- Groß Child Table (Erbt von Child Table)
- Linking Table (Hat Fremdschlüssel Nullable, zu Child Table)
Hier ist das Datenbankdiagramm
Nach dem obigen Video habe ich die Methode Table Per Type auf das Standardschema angewendet, das Linq für Entitäten erstellt, wenn Sie die obigen Tabellen zu einem Modell hinzufügen.
Vor Tabelle pro Typ Anwendung:
Nach Tabelle pro Typ:
ich dann das Projekt zusammengestellt und bekam den Fehler, den Sie im Bild oben sehen kann. Um dies zu beheben, ging ich zum Mapping für den Fremdschlüssellink, ich fügte das childid-Feld hinzu, über das die Fehlermeldung stöhnte.
ich dann neu kompiliert und eine andere Fehlermeldung erhalten:
Problem in Mapping Fragments starting at lines 147, 176: Two entities with different keys are mapped to the same row. Ensure these two mapping fragments do not map two groups of entities with overlapping keys to the same group of rows.
Dies ist der Punkt, den ich jetzt bin. Das Problem scheint, dass die "ChildID" auf der "LinkingTable" NULL ist. Wenn ich es auf Null setze, bekomme ich den obigen Fehler nicht.
Ich habe die Datenbank und das Projekt in den obigen Schritten zu einem sky drive gespeichert.
Kann jemand diesen Fehler beheben?
Dave
Hier ist die Fest-Code (dank der Gecko)
Vor
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
</AssociationSetMapping>
Nach
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
<Condition ColumnName="ChildID" IsNull="false"/>
</AssociationSetMapping>
Danke .. ich gebe es und lass es dich wissen. – CraftyFella
brilliant ... das funktioniert total .. Es sieht jetzt so aus: –
CraftyFella