我在实体框架中的数据库第一个模型上遇到以下错误:
错误3032:从第3434行开始映射片段时出现问题, 4312:EntityTypes Model.Docent,Model.Student被映射到 表格参加者中的相同行。映射条件可用于 区分这些类型映射到的行。
虽然我已经为这些模型添加了条件:
<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)
答案 0 :(得分:0)
好吧,我发现了问题。 Person实体已映射标量属性和关联。协会所在的问题。因为它们可能有两种类型。我无法为他们写条件,因为他们可以映射到两个属性。所以我完全删除了Person类的标量属性和表映射。
之后,我在Docent en Student类上实现了这些标量属性的私有版本。并通过部分实现暴露它们。我将它们作为抽象添加到Person类。
我希望这是明确的,并帮助其他人。可能其他人可以把它写得更清晰。