实体框架错误“实体类型未映射”。

时间:2011-04-20 23:09:13

标签: c# .net asp.net entity-framework entity-framework-4

我们在项目中使用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>

5 个答案:

答案 0 :(得分:10)

每个实体都必须映射到QueryView或数据库表/定义查询。您无法创建根本未映射的实体。如果要定义未在模型中映射的函数导入结果,则必须将VendorBrief定义为复杂类型。

答案 1 :(得分:8)

  1. 打开数据模型(edmx文件)
  2. 右键单击数据模型,然后选择“模型浏览器”
  3. 在模型浏览器窗口中,转到“功能导入”并删除相应的项目。

答案 2 :(得分:6)

尝试打开您的实体文件图表.edmx。然后使用DEL删除所有表。然后在图表中右键单击并选择“从数据库更新模型”。

Visual Studio在这个方面有点烦恼。

答案 3 :(得分:3)

您是否尝试使用复杂类型而不是实体来表示它并映射到它?

http://msdn.microsoft.com/en-us/library/bb738472.aspx

答案 4 :(得分:-1)

我也遇到了这个问题,但是当我在 XML 编辑器中打开 edmx 时错误消失了。我尝试了删除表格然后更新 edmx 的所有变体。

我遇到的另一件奇怪的事情,错误是指两个表之间的关系,但是当我双击错误消息时,它突出显示了另一个表,而不是它所指的两个表。