我在实体框架中的数据库第一个模型上收到以下错误:
错误3032:从第3434行开始映射片段的问题, 4312:EntityTypes模型。 桌上的同一行。映射条件可用于 区分这些类型的行映射到。
虽然我已经为这些模型添加了条件:
<EntityTypeMapping TypeName="IsTypeOf(Model.Student)">
<MappingFragment StoreEntitySet="Attendee">
<ScalarProperty Name="Id" ColumnName="atnId" />
<Condition ColumnName="atnTypeId" Value="1" />
</MappingFragment>
</EntityTypeMapping>
和
<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>
它们是一个更复杂的层次结构,可能是问题所在。但是我不确定如何进行。这是一个层次结构:
Attendee (Abstract)
-> Facility (Type = 3)
-> AttendeeCollection (Abstract)
-> Team (Type = 4)
-> Group (Type = 5)
-> Person (Abstract)
-> Student (Type = 1)
-> Docent (Type = 2)
我弄清楚了这个问题。该人实体具有映射标量属性和关联。问题的关联。因为它们可能是两种类型。我无法为他们写作,因为它们可以映射到两个属性。因此,我完全删除了人类类的标量属性和表映射。
之后,我在Docent EN学生课上实现了这些标量属性的私人版本。并通过部分实施暴露它们。我将它们添加到人类班级中的抽象。
我希望这很清楚并为其他人提供帮助。可能有人可以写下来更清晰。