0

我按照这篇文章从存储过程中检索多个实体集。

我已经更改了我的实体的列映射,以便它们通过 Resharper。我是否必须重写结果映射中的列映射?

例如,我有以下 EntitySetMapping:

      <EntitySetMapping Name="IrmaObjectConfiguraties">
        <EntityTypeMapping TypeName="IrmaModel.IrmaObjectConfiguratie">
          <MappingFragment StoreEntitySet="IrmaObjectConfiguratie">
            <ScalarProperty Name="Gid" ColumnName="GID" />
            <ScalarProperty Name="IrmaObjectGid" ColumnName="IrmaObject_GID" />
            <ScalarProperty Name="IrmaConfiguratieGid" ColumnName="IrmaConfiguratie_GID" />
          </MappingFragment>
        </EntityTypeMapping>
      </EntitySetMapping>

此实体作为存储的 proc 结果集的一部分返回 bij:

        <ResultMapping>
          <EntityTypeMapping TypeName="IrmaModel.IrmaObjectConfiguratie">
            <!--ScalarProperty Name="Gid" ColumnName="Gid" />
            <ScalarProperty Name="IrmaObjectGid" ColumnName="IrmaObject_Gid" />
            <ScalarProperty Name="IrmaConfiguratieGid" ColumnName="IrmaConfiguratie_Gid" /-->
          </EntityTypeMapping>
        </ResultMapping>

当我删除注释时,导入函数的执行正常,但是当没有列映射时,我检索到以下错误:

数据读取器与指定的“IrmaModel.IrmaObjectConfiguratie”不兼容。类型的成员“IrmaObjectGid”在数据读取器中没有同名的对应列。

作为一种解决方法,我可以再次定义所有列映射,但也可以使用在EntitySetMapping?

4

1 回答 1

0

我不认为 ResultMapping 重用来自 EntitySet 映射的映射。似乎(我在这里不是 100% 肯定)如果您不指定属性 <-> 列映射,EF 将尝试使用属性名称作为存储过程返回的结果集中的列名称。

于 2012-10-03T17:06:33.617 回答