Ошибка 3004: проблема с отображением фрагмента, начинающегося со строки - PullRequest
35 голосов
/ 19 мая 2011

У меня возникает эта ошибка при создании веб-службы:

Ошибка 3004: проблема в фрагменте сопоставления, начинающемся со строки 323. Не указано сопоставление для свойств JE_TRN_HS.JE_HDR_HSJE_HDR_KEY.Сущность имеет тип [TESTCPModel.JE_TRN_HS

Вот что случилось.Я создал эту модель данных сущностей из существующей базы данных.Я добавил 2 таблицы и перестроил веб-сервис.Сборка прошла успешно.

Затем я добавил связь между двумя таблицами.Когда я попытался восстановить его, это не удалось с сообщением об ошибке, показанным выше!

Теперь вот кикер!Я удалил недавно добавленную ассоциацию и восстановил.Сборка не удалась с тем же сообщением об ошибке !?Единственный способ избавиться от этой ошибки - если я удалю вторую таблицу, перестрою и заново добавлю вторую таблицу ??

Я искал ВСЕГДА решение этой проблемы!Спасибо Стив

Ответы [ 11 ]

34 голосов
/ 20 сентября 2011

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

Определение ограничений в модели EF4, которых нет в базе данных


В случае исчезновения связанной статьи, решение:

Вам необходимо открыть окно свойств ассоциации, а затем щелкнуть по эллипсам ссылочных ограничений, чтобы перейти к диалогу ограничений ref. Затем выберите правильное поле для параметра «Зависимое свойство».

22 голосов
/ 15 апреля 2014

В моем случае другой разработчик удалил поле из таблицы в базе данных.Осознав это, удаление таблицы из модели сущностей и ее добавление обратно решило проблему.

2 голосов
/ 20 мая 2011

Вы не можете просто добавить таблицы из базы данных в вашу модель, а затем создать новую связь в модели. По умолчанию он использует независимую ассоциацию, которая должна быть сопоставлена ​​с его аналогом базы данных = отношение должно существовать и в базе данных. Вы должны смоделировать свое отношение как ассоциацию FK , но она допускает только ассоциации один-к-одному и один-ко-многим. Различия между типами ассоциаций описаны здесь .

0 голосов
/ 15 мая 2019

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

После некоторого расследования, это решение: перейдите к диаграмме ваших сущностей.Найдите свою таблицу или откройте справа Обозреватель моделей (щелкните правой кнопкой мыши на диаграмме - Откройте обозреватель моделей).Найдите свою модель / таблицу в разделе ... Model, ... Model.Store и удалите ее.После этого снова добавьте таблицу из базы данных и проблема решена.

0 голосов
/ 26 апреля 2019

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

0 голосов
/ 21 ноября 2018

Если вы применили сопоставление к сущности, попробуйте удалить этот столбец из таблицы, что решит проблему

0 голосов
/ 13 сентября 2018

Обновление модели из базы данных не работает для меня.

Поэтому мне нужно сначала удалить все объекты перед обновлением модели из базы данных, чтобы успешно исправить решение.

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

Я получал эту ошибку от Linqpad и не мог понять, почему она внезапно начала происходить и будет ли это проблемой в моем приложении, использующем контекст.Я также просто удалил класс, который был недавно создан новым объектом, а затем щелкнул правой кнопкой мыши файл .tt и нажал «выполнить до курсора», чтобы восстановить класс.Это исправило это для меня.

0 голосов
/ 13 января 2017

Испытал похожую проблему с EF 6:

exception.InnerException
{"\r\nEntities.EAM.msl(458,10) : error 3004: Problem in mapping fragments starting at line 458:No mapping specified for properties InspectionPdfReportRequest.SyncDate in Set InspectionPdfReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionPdfReportRequest]\r\n\r\nEntities.EAM.msl(488,10) : error 3004: Problem in mapping fragments starting at line 488:No mapping specified for properties InspectionReportRequest.SyncDate in Set InspectionReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionReportRequest]\r\n"}
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232032
    HelpLink: null
    InnerException: null

Проблема оказалась в том, что я внес изменение в файл * .edmx для моего приложения EF, созданного на основе базы данных, непосредственно в текстовом редакторе.вместо использования дизайнера.Так что просто отменил изменения текста и применил их с помощью дизайнера, и ошибка исчезла.Нажав кнопку «Сохранить» в конструкторе, обновите связанный файл * .msl.

0 голосов
/ 25 сентября 2016

Вы можете получить эту ошибку, если у вас есть свойство в модели, которое не отображается.

Например, я конвертировал некоторые Linq2Sql в EF6, и у меня была ошибка в поле Binary. Двоичный тип System.Data.Linq, но для EF он должен быть byte[]. Его изменение устранило проблему.

...