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>

このエンティティは、ストアド プロシージャの結果セットの一部として 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 マッピングからマッピングを再利用するとは思わない。プロパティ <-> 列マッピングを指定しない場合、EF は、ストアド プロシージャによって返される結果セットの列名としてプロパティ名を使用しようとするようです (ここでは 100% 肯定的ではありません)。

于 2012-10-03T17:06:33.617 に答える