Entity Framework - «Проблема в отображении фрагментов» - ошибка. Помогите мне понять объяснения этой ошибки - PullRequest
46 голосов
/ 19 июня 2009

Ошибка 3007: проблема в отображении фрагментов, начинающихся со строк 186, 205. Столбцы с не-первичным ключом [WheelID] сопоставляются в обоих фрагментах с различными концептуальными свойствами стороны - возможно несоответствие данных, поскольку соответствующая концептуальная сторона свойства могут быть независимо изменены.

Я нашел несколько мест в сети, описывающих эту ошибку, но я просто не понимаю их. (смутный смайлик идет сюда)

Один
Два
Три
Четыре

Здесь есть что-то довольно фундаментальное, я, должно быть, скучаю. Можете ли вы объяснить это, чтобы я понял это? Может быть, используя мой пример из реальной жизни ниже?

alt text

Внешний ключ 1: N Wheels.Id -> Slices.WheelId

Я добавляю их в каркас сущностей, а WheelId не отображается в сущности Slices.

alt text

Выполнение некоторого обходного пути (удаление отношения из базы данных перед добавлением таблиц в EF - затем повторное создание и обновление EF) Мне удалось заставить WheelId оставаться в слайсах, но затем я получил ошибку, упомянутую вверху.

Ответы [ 11 ]

41 голосов
/ 19 июня 2009

Так как Slices.WheelId является FK, вы не можете выставить его в своей модели клиента, точка. Однако есть способы получить значение.

var wheelId = someSlice.Wheels.ID;

Обновление В EF 4 вы можете сделать это, используя FK Ассоциации вместо независимых ассоциаций.

26 голосов
/ 26 августа 2010

Попробуйте удалить столбец сторонних свойств из набора сущностей, используя дизайн модели сущностей, это решит вашу проблему

Например

У нас есть две таблицы, одна из которых customer , а другая - order , используя дизайн модели объекта, мы добавили связь между клиентами и заказами, когда будем делать эту структуру объекта Ado.net добавить свойства навигации в обе приведенные ниже таблицы.

Как Заказы клиентов. Здесь заказ - список Заказ. Заказчик

Один - Много отношений.

Поэтому нам нужно удалить свойство с именем CustomerId [Столбец внешнего ключа] из Заказ набор сущностей.

Для справки:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/2823634f-9dd1-4547-93b5-17bb8a882ac2/

4 голосов
/ 07 июля 2016

Мне удалось преодолеть эту проблему с помощью следующих шагов: щелкните правой кнопкой мыши окно дизайнера Выберите «обновить модель из базы данных» Выберите «Добавить» и убедитесь, что установлен флажок «Включить столбцы внешнего ключа в модель». нажмите на Готово ...

3 голосов
/ 14 мая 2013

Я установил внешние ключи в базе данных, но фреймворк все еще не вытягивал их правильно. Поэтому я попытался добавить ассоциацию самостоятельно.

Однако, когда я сделал это, я получил ошибку отображения. Это заняло у меня некоторое время, но я понял. То, что я сделал, - это установил ассоциацию, используя инструмент ассоциации набора инструментов сущностей, и затем вам нужно дважды щелкнуть по строке ассоциации (от 1 до многих) и установить там первичный и внешний ключ. Надеюсь, это поможет другим, у кого может быть такая же проблема. Я нигде не мог найти ответ.

2 голосов
/ 14 июля 2012

У меня была эта проблема по совершенно другой причине, и сообщение было немного другим; в нем не сказано «несогласованность данных возможна, потому что соответствующие концептуальные побочные свойства могут быть независимо изменены».

В моей модели есть таблица с двоичным столбцом, в котором хранятся данные изображений. Я хочу, чтобы эти данные возвращались только тогда, когда они мне нужны (производительность - это функция), поэтому я разделил таблицу, используя метод, аналогичный this . Позже я добавил свойство в эту таблицу, а затем обновил модель из базы данных. Мастер добавил свойство к обоим типам сущностей, которые ссылаются на таблицу с добавленным свойством. Мне пришлось удалить его из одного из них, чтобы устранить ошибку.

1 голос
/ 17 ноября 2014

У меня это произошло, потому что мастер обновления Entity Framework неправильно установил некоторые ключи (или не обновил?). В результате некоторые столбцы были ошибочно помечены как ключи, в то время как фактические ключевые столбцы рассматривались как простые столбцы.

Решением было вручную открыть файл EDMX, найти объекты и обновить ключи.

0 голосов
/ 16 апреля 2018

Я проверил свое окно списка ошибок и заметил, что у меня были ошибки в модели. Исправил их и все хорошо

0 голосов
/ 06 марта 2017

Не удалось получить ответ для работы с EF6. Кажется, проблема в том, что фреймворк неправильно импортирует внешние ключи как ассоциации. Моим решением было удалить внешние ключи из таблиц, а затем вручную добавить ассоциации с использованием модели Entity Framework, выполнив следующие шаги: Entity Framework - Добавить свойство навигации вручную

0 голосов
/ 09 марта 2016

У меня уже была таблица в EF. Я добавил еще две таблицы, которые имели внешние ключи в ранее добавленной таблице. Затем я получил ошибку 3007.

Чтобы исправить ошибку, я удалил все три таблицы из файла EDMX, а затем заново добавил их все вместе (через «Обновление модели из базы данных ...»), а не поэтапно.

0 голосов
/ 30 апреля 2014

Решение состоит в том, чтобы разрешить удаление правила = Каскад на ассоциации Sql.

То же самое, что и в модели .edmx, добавление элемента в ассоциации:

<Association Name="FK_Wheels_Slices">
          <End Role="Wheels" Type= "your tipe here" Multiplicity="1">
          <OnDelete Action="Cascade" />
          </End>
 </Association>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...