【问题标题】:Entity framework error "Entity type is not mapped."实体框架错误“实体类型未映射。”
【发布时间】:2021-03-02 05:18:30
【问题描述】:

我们在项目中使用实体框架,并且我在模型中构建了一个实体。然后我有一个使用存储过程的函数导入。函数导入创建的方法应该返回我创建的自定义实体的集合。

问题是我在构建时收到错误消息“实体类型'someentity'未映射。

这是什么意思?是否因为实体没有底层数据存储而感到不安?不需要,函数 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>

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:
    1. 打开数据模型(edmx 文件)
    2. 右键单击数据模型并选择模型浏览器
    3. 在模型浏览器窗口中,转到函数导入并删除相应的项目。

    【讨论】:

      【解决方案3】:

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

      Visual Studio 在这方面有点问题。

      【讨论】:

      • 或者如果你在数据库中没有数据,你可以做相反的事情:Update Database from Model。这也应该能解决问题。
      • 我觉得你们俩都误会了。此实体未映射到数据库。该实体仅存在于 EDMX 中,不应被映射。唯一使用它的时候是函数导入需要一个地方来转储存储过程的结果。它以这种自定义实体类型的集合的形式执行此操作。
      • 六年后,也就是 2017 年年中,这个 bug 仍然存在并在“VS2015 Update 3”中出现。我知道它不受支持,但“LINQ to SQL”总是工作。每次......
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 这个答案太模糊,对其他人没有意义。
        • 太模糊了?什么太模糊了?您在 XML 编辑器中打开该文件,它就可以工作了。换句话说,这是一个 VS 编辑器的问题。
        猜你喜欢
        • 1970-01-01
        • 2011-08-28
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 2017-08-15
        • 2010-10-09
        相关资源
        最近更新 更多