Używam Linq do podmiotów stosujących podejście Table per Type. Do tej pory działo się to bardzo dobrze. Mam następującą konfigurację:Linq do encji, tabela na typ i zerowe relacje klucza obcego
- tabeli nadrzędnej
- tabeli podrzędnej (Dziedziczy z rodzicem)
- Wielki dziećmi Tabela (Dziedziczy z tabeli podrzędnej)
- linkami tabeli (ma klucz obcy Nullable, aby Tabela dziecko)
Oto schemat bazy danych
Po powyższym wideo zastosowałem podejście Tabela na typ do domyślnego schematu, który Linq do encji tworzy po dodaniu powyższych tabel do modelu.
Przed nałożeniem Table per Typ:
Po Tablicy od rodzaju:
Następnie skompilowany projekt, ale ten błąd można zobaczyć na obrazku powyżej. Aby to naprawić poszedłem do mapowania dla klucza obcego, dodałem pole childid, na które słychać było komunikat o błędzie.
Potem rekompilacji i dostać inny błąd:
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.
jest to punkt, jestem obecnie. Problem wydaje się, że "ChildID" w "LinkingTable" jest Nullable. Jeśli ustawię go na Non nullable, nie otrzymam powyższego błędu.
Zapisałem bazę danych i projekt używany w powyższych krokach do sky drive.
Czy ktoś wie, jak naprawić ten błąd?
Dave
Oto stała Code (Dzięki Gecko)
Przed
<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>
Po
<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>
Dzięki .. Dam ci iść i dam ci znać. – CraftyFella
genialny ... to działa całkowicie. Wygląda teraz tak: –
CraftyFella