プロジェクトでEntity Frameworkを使用していて、モデルに構築したエンティティがあります。次に、ストアドプロシージャを使用する関数のインポートがあります。関数importによって作成されたメソッドは、私が作成したカスタムエンティティのコレクションを返すことになっています。
問題は、ビルド時に「エンティティタイプ 'someentity'がマップされていない」というエラーが発生することです。
これは何を意味するのでしょうか?エンティティに基になるデータストアがないため、動揺していますか?これは必要ありません。関数importはこのエンティティのインスタンスを返します。このタイプのエンティティを更新、編集、または挿入する必要はありません。
関数importは適切に機能し、必要に応じてエンティティのコレクションを返しますが、このエラーは煩わしいものです。エラーリストにはコンパイルエラーとしてリストされますが、ソリューションのコンパイルが実際に停止するわけではありません。
XMLエディターでEDMXを開き、エラーリストでエラーをダブルクリックすると、XMLのこのチャンクが赤で強調表示されます。
<EntityContainerMapping StorageEntityContainer="KlasEntitiesStoreContainer" CdmEntityContainer="KlasEntities">
<EntitySetMapping Name="VendorBriefs"><EntityTypeMapping TypeName="KlasEntityDataModel.VendorBrief"><MappingFragment StoreEntitySet="ev_VendorBriefs">
<ScalarProperty Name="VendorBriefID" ColumnName="VendorBriefID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Link" ColumnName="Link" />
<ScalarProperty Name="LinkText" ColumnName="LinkText" />
<ScalarProperty Name="BriefPath" ColumnName="BriefPath" />
<ScalarProperty Name="Description" ColumnName="Description" />
<ScalarProperty Name="IsActive" ColumnName="IsActive" />
<ScalarProperty Name="DisplayOrder" ColumnName="DisplayOrder" />
</MappingFragment></EntityTypeMapping></EntitySetMapping>
<FunctionImportMapping FunctionImportName="SearchForVendorProductByKlasID" FunctionName="KlasEntities.Store.ev_ds_Products_SearchByKLASID" />
</EntityContainerMapping>
各エンティティは、QueryViewまたはデータベーステーブル/定義クエリにマップする必要があります。まったくマッピングされていないエンティティは作成できません。モデルにマッピングされていない関数インポートの結果を定義する場合は、VendorBrief
を複合型として定義する必要があります。
エンティティファイルの図である.edmxを開こうとします。そして、DELを使用してすべてのテーブルを削除します。次に、ダイアグラム内を右クリックし、[データベースからモデルを更新]を選択します。
Visual Studioはこの点で少しバグがあります。
エンティティの代わりに複合型を使用してそれを表現し、代わりにそれにマッピングしてみましたか?