Проблема преобразования Entity Framework из v1 в v4 - PullRequest
7 голосов
/ 17 июня 2010

После преобразования моего проекта уровня доступа к данным из EntityFramework v1 в v4 a появилось несколько ошибок для каждого из классов сущностей:

Ошибка 10016: ошибка при разрешении элемента EntityTypeShape. Сообщение об исключении: «Неразрешенная ссылка« NS.EntityName1 ».». DataAccessLayer \ Model.edmx

и

Ошибка 10016: ошибка при разрешении элемента «AssociationConnector». Сообщение об исключении: «NS.EntityName1». '. DataAccessLayer \ Model.edmx

Кто-нибудь знает, что это и как это исправить?

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Если модель небольшая, возможно, проще всего ее восстановить.Если вы предпочитаете исправить это, вы можете изменить XML в редакторе XML вручную, до или после преобразования.Проблема, в моем случае, заключалась в том, что атрибуты EntityType были неправильными - в частности, пространство имен было неправильным.Я не уверен, как это правильно работало в VS2008, но у меня не было желания заниматься этим дальше.Если вы не возражаете против потери макета вашей модели, самый простой способ исправить это - удалить все, что находится внутри тега <Diagram>, чтобы это выглядело так:

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

Сохраните его и откройте сновамодель в конструкторе.Проблема должна быть решена сейчас.

Если вы хотите сохранить свой макет, а не просто удалять все внутри тега <Diagram>, вам необходимо исправить любые атрибуты EntityType, которые не являются правильными.Хитрость заключается в том, чтобы убедиться, что указано полное имя типа.В моем случае в пространстве имен было что-то лишнее - не знаю, как оно туда попало или как оно работало в VS2008, но исправить это - первый шаг.Вы можете проверить свое пространство имен и имя сущности, посмотрев на сгенерированный код для модели.

Я пробовал это решение как в VS2008, так и в VS2010 и получил разные результаты.В VS2010 простое исправление атрибутов EntityType решило проблему немедленно.В VS2008 я получил ошибку при повторном открытии модели: «Неверный параметр».Чтобы решить эту проблему, я снова смог вручную отредактировать XML.На этот раз я удалил все теги <AssociationConnector> (и все дочерние элементы).Затем сохранил файл и все снова заработало.

4 голосов
/ 25 июня 2010

У меня была точно такая же проблема.Я не знаю, является ли это вашей проблемой или нет, но, посмотрев на edmx в представлении xml, я обнаружил, что у меня есть дублирующиеся ссылки в 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" />
...