Подтвердить что ты не робот

Ошибка 3004: проблема с отображением фрагмента, начинающегося со строки

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

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

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

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

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

Я посмотрел ВЕЗДЕ для решения этой проблемы! благодаря Стив

4b9b3361

Ответ 1

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

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


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

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

Ответ 2

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

Ответ 3

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

Ответ 4

Я столкнулся с этой проблемой прямо сейчас... Необходимо добавить скалярное свойство, скажем, custom_property к существующей таблице, используя конструктор в Visual Studio.

Я мог бы обновить модель из базы данных, но это было невозможно. Это вызывало много ошибок в модели. Это огромная модель базы данных, и таблица, в которой мне нужно было добавить это свойство, может иметь более 30 связей. Я просто хотел отобразить этот новый столбец custom_property, который был добавлен в таблицу с именем custom_table.

После добавления скалярного свойства непосредственно в конструкторе выдается следующее исключение:

  • InnerException {"\ r\nModels.MyDB.msl(352,10): ошибка 3004: проблема при отображении фрагментов, начинающихся со строки 352. Не отображается указано для свойств custom_table.custom_property в Set custom_table.\r\nАнтизм с ключом (PK) не будет проходить в обоих направлениях, когда:\r\n Тип объекта [MyDB.custom_table]\r\n "} System.Exception {} System.Data.Entity.Core.MappingException

В Error List в VS это было показано: Error 11009: Property ' ' is not mapped

Действия, которые я предпринял, чтобы исправить это:

  1. Отредактировал файл .edmx в коде Visual Studio;
  2. Искал custom_table;
  3. Дополнен XML-код .edmx с отображениями.

Это были места, где я должен был добавить сопоставления:

<EntityType Name="custom_table">
    <Key>
        <PropertyRef Name="some_id" />
    </Key>
    <Property Name="some_id" Type="int" Nullable="false" />
    <Property Name="other_id" Type="int" />
    ...
    <Property Name="custom_property" Type="int" Nullable="true" /> <= THIS WAS ADDED BY ME
</EntityType>

и

<EntitySetMapping Name="custom_table">
  <EntityTypeMapping TypeName="MyDB.custom_table">
    <MappingFragment StoreEntitySet="custom_table">
      <ScalarProperty Name="some_id" ColumnName="some_id" />
      <ScalarProperty Name="other_id" ColumnName="other_id" />
      ...
      <ScalarProperty Name="custom_property" ColumnName="custom_property" /> <= THIS WAS ADDED BY ME
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

Ответ 5

У меня была эта проблема, когда я закончил "обновление модели из базы данных" после изменения строки подключения.

Щелкнув правой кнопкой мыши на объекте и включив и выключив ключ, он, похоже, вызвал обновление и устранил проблему. Это больше похоже на ошибку с инфраструктурой Entity.

Следует отметить, что в этом случае я использовал соединитель MySQL, поэтому я подозреваю, что он довольно утончен вообще.

Ответ 6

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

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

Ответ 7

Опытная аналогичная проблема с 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 первой базы данных непосредственно в текстовый редактор вместо использования конструктора. Так что просто вернул текст и применил их с помощью конструктора, и ошибка исчезла. Нажатие save в дизайнере - это обновление связанного файла *.msl.

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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