代码之家  ›  专栏  ›  技术社区  ›  Max

从v1到v4的实体框架转换问题

  •  7
  • Max  · 技术社区  · 14 年前

    在将我的数据访问层项目从EntityFrameworkv1转换为v4之后,每个实体类都出现了一堆错误:

    错误10016:解析项“EntityTypeShape”时出错。异常消息为:“未解析的引用”ns.entityname1“。数据访问层\模型.edmx

    错误10016:解析项“AssociationConnector”时出错。异常消息为:“ns.entityname1.”。数据访问层\模型.edmx

    有人知道这是什么以及如何修复吗?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Dominick    14 年前

    如果模型很小,可能最容易重新生成它。如果希望修复它,可以在转换之前或之后在XML编辑器中手动修改XML。在我的例子中,问题是EntityType属性不正确-特别是命名空间不正确。我不确定它在vs2008中是如何正确工作的,但我不想继续追求它。 如果不介意丢失模型的布局,最简单的修复方法是删除 <Diagram> 标记,如下所示:

    <!-- Diagram content (shape and connector positions) -->
    <edmx:Diagrams>
      <Diagram Name="YourDiagramName">
      </Diagram>
    </edmx:Diagrams>
    

    保存它并在设计器中重新打开模型。这个问题现在应该解决了。

    如果你想保留你的布局,而不是简单地删除 <图表; 标记,您需要更正任何不正确的EntityType属性。诀窍是确保指定了完全限定类型名。在我的例子中,名称空间中有一些额外的东西——不确定它是如何到达那里的,也不知道它在vs2008中是如何工作的,但是纠正这一点是第一步。您可能希望通过查看为模型生成的代码来验证命名空间和实体名。

    我在vs2008和vs2010中都尝试了这个解决方案,得到了不同的结果。在vs2010中,只需更正entitytype属性就可以立即解决问题。在vs2008中,我在再次打开模型时收到一个错误,“参数不正确”。要解决此问题,我可以再次手动编辑xml。这次我把所有的 <AssociationConnector> 标记(和任何子元素)。然后保存了文件,一切似乎又恢复了正常。

        2
  •  4
  •   John Kraft    14 年前

    我也有同样的问题。我不知道这是否是您的问题,但通过查看xml视图中的edmx,我发现在xml中,每个项目都有重复的引用。我所要做的就是删除重复的引用,一切正常。

    以下是我的意思的一个例子:

    <EntityTypeShape EntityType="PackageManagementEntityModel.Package" Width="1.5" PointX="0.75" PointY="0.75" Height="3.5644742838541665" IsExpanded="true" />
    <EntityTypeShape EntityType="PackageManagementEntityModel.ShipLane" Width="1.5" PointX="2.75" PointY="0.75" Height="1.7566536458333331" IsExpanded="true" />
    <EntityTypeShape EntityType="PackageManagement.EntityModel.Package" Width="1.5" PointX="0.75" PointY="0.75" Height="3.5844742838541652" />
    <EntityTypeShape EntityType="PackageManagement.EntityModel.ShipLane" Width="1.5" PointX="2.625" PointY="0.75" Height="1.7566536458333335" />