Sto ottenendo il seguente errore sul mio primo modello di database in Entity Framework:
Errore 3032: problema nella mappatura dei frammenti che iniziano alle righe 3434, 4312: EntityTypes Model.Docent, Model.Student vengono mappati alle stesse righe nella tabella Partecipante. Le condizioni di mappatura possono essere utilizzate per distinguere le righe a cui sono mappati questi tipi.
Mentre ho già aggiunto le condizioni a questi modelli:
<EntityTypeMapping TypeName="IsTypeOf(Model.Student)">
<MappingFragment StoreEntitySet="Attendee">
<ScalarProperty Name="Id" ColumnName="atnId" />
<Condition ColumnName="atnTypeId" Value="1" />
</MappingFragment>
</EntityTypeMapping>
E
<EntityTypeMapping TypeName="IsTypeOf(Model.Docent)">
<MappingFragment StoreEntitySet="Attendee">
<ScalarProperty Name="AvailabilityApprovedByType" ColumnName="atnAvailabilityApprovedByAttId" />
<ScalarProperty Name="Id" ColumnName="atnId" />
<Condition ColumnName="atnTypeId" Value="2" />
</MappingFragment>
</EntityTypeMapping>
La loro è una gerarchia più complessa, forse questo è il problema. Ma non sono sicuro di come procedere. Questa è la gerarchia:
Attendee (Abstract)
-> Facility (Type = 3)
-> AttendeeCollection (Abstract)
-> Team (Type = 4)
-> Group (Type = 5)
-> Person (Abstract)
-> Student (Type = 1)
-> Docent (Type = 2)
Bene, ho capito il problema. L'entità Persona aveva mappato proprietà e associazioni scalari. Le associazioni in cui il problema. Perché potrebbero essere di due tipi. Non potevo scrivere in una condizione per loro perché potevano mappare a due proprietà. Così ho rimosso del tutto le proprietà scalari e il mapping delle tabelle per la classe Person.
Successivamente ho implementato versioni private di queste proprietà scalari nella classe Docent en Student. E li ha esposti tramite un'implementazione parziale. Dove li ho aggiunti come astratti alla classe Person.
Spero che questo sia chiaro e aiuti qualcun altro. Forse qualcun altro può annotarlo più leggibile.