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

Ошибка Entity Framework - Ошибка 11009: свойство '' не отображается

Чтобы улучшить старый проект, я вынужден обстоятельствами использовать VS 2008 и Framework 3.5. У меня возникают проблемы с edmx, показывающим странное поведение и не обновляющее сущности по мере необходимости.

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

Если я удалю таблицу из диаграммы, выбрав ее и нажав del, тогда в обозревателе моделей она исчезнет из базы .Database, но при нажатии "Обновить модель из базы данных" я не вижу я в списке "Добавить", все, что я могу сделать, это "Обновить" таблицу, так как я все еще вижу ее в списке обновлений (чего не должно быть, потому что я удалил ее!)

4b9b3361

Ответ 1

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

Ответ 2

У меня возникла эта проблема, когда я изменил имя столбца от CampaignKey до CampaignCode. После изменения БД я пошел в конструктор .edmx, щелкнул правой кнопкой мыши и выбрал Обновить модель из базы данных. Затем, когда я скомпилировал, я получил ошибку:

Ошибка 11009: Свойство CampaignKey не отображается.

Более подробно рассмотрев таблицу в дизайнере, я показал, что Visual Studio создала новое поле CampaignCode, как в БД. Но он также оставил там старое поле CampaignKey, вызывая ошибку, поскольку она больше не существует в БД.

Чтобы устранить проблему, я щелкнул правой кнопкой мыши по полю CampaignKey в моей таблице в дизайнере и выбрал Удалить.

После этого я сохранил .edmx, скомпилировал и ошибка исчезла.

Ответ 3

Я получил эту же ошибку до того, как изменится регистр имен столбцов в таблицах или представлениях. Например, если в представлении есть столбец с именем "OrderID", а затем имя столбца изменяется на "OrderId", тогда он выдаст ошибку "Property" OrderID "не отображается". Это можно решить, изменив случай на то, как оно существует в модели.

Ответ 4

Иногда обновление проекта вызывает ошибки.

Просто убедитесь, что вы скопировали все свои данные в любом случае.

Когда мы добавляем модель сущности в наш проект, она добавляет соответствующую строку для подключения к web.config. Теперь, когда вы удаляете модель из проекта, даже тогда строка соединения все еще находится там в web.config.

Итак, сделайте следующие шаги:

  • Удалить модель
  • Удалить соответствующую строку подключения из web.config
  • Теперь выполните шаги, чтобы снова добавить модель с нуля.

Надеюсь, он должен работать.

Ответ 5

Я открыл файл edmx в Notepad и удалил неправильное поле. Затем я обновил модель еще раз в дизайнере

Ответ 6

Я знаю, что этот вопрос касался VS 2008 и "восстановления" модели, но для тех, кто находит это, как я сделал, когда у меня была такая же ошибка 11009 в VS 2015, я сначала попробовал "Обновить модель из базы данных" до no avail, затем я, наконец, исправил его, щелкнув правой кнопкой мыши таблицу модели в проекте .edmx и выбрав Table Mapping. Мне не нужно было удалять модель. Моя модель связана с таблицей db.

Ответ 7

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

  • удаление таблицы из модели (щелкните правой кнопкой мыши по таблице, нажмите delete),
  • обновление модели из базы данных (щелкните правой кнопкой мыши на фоне edmx, выберите "Обновить модель из базы данных", "Добавить измененную таблицу" ).

Ответ 8

У меня была такая же проблема с Visual Studio 2017 и Entity Framework 6 в первой модели базы данных, обновив ее, чтобы получить новые столбцы.

Я пробовал все выше, но единственное, что работало, это удалить EDMX и создать новый.

Ответ 9

У меня есть эта ошибка (Ошибка 3007: проблема в отображении фрагментов, начинающихся со строк...), после добавления таблицы в .edmx

Сначала я удаляю последнюю добавленную таблицу, затем я заново обновляю модель с этой таблицей, но отмечаю флажок "включить ключ":

enter image description here

Ответ 10

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

Проблема в том, что после этого я начал получать следующее исключение:

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

В Visual Studio в окне Error List отображалось следующее: Error 11009: Property ' ' is not mapped

Чтобы это исправить, я сделал следующее:

  1. Открыл файл .edmx в коде Visual Studio;
  2. Искал обидчика table_name;
  3. При необходимости добавлены отсутствующие сопоставления.

В двух местах отсутствовали сопоставления:

<EntityType Name="table_name">
    <Key>
        <PropertyRef Name="user_id" />
    </Key>
    <Property Name="user_id" Type="int" Nullable="false" />
    <Property Name="tenant_id" Type="int" />
    ... ALL OTHER COLUMNS HERE ...
    <Property Name="sys_user_id" Type="int" Nullable="true" /> <= WAS MISSING THIS AND SO I HAD TO ADD IT BY HAND
</EntityType>

и

<EntitySetMapping Name="table_name">
  <EntityTypeMapping TypeName="ShardDB.table_name">
    <MappingFragment StoreEntitySet="table_name">
      <ScalarProperty Name="user_id" ColumnName="user_id" />
      <ScalarProperty Name="tenant_id" ColumnName="tenant_id" />
      ... ALL OTHER COLUMNS HERE ...
      <ScalarProperty Name="sys_user_id" ColumnName="sys_user_id" /> <= WAS MISSING THIS AND SO I HAD TO ADD IT BY HAND
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

После изменения его в коде Visual Studio и возвращения в Visual Studio он попросил меня перезагрузить файл .edmx, так как он был изменен. Перезагрузите, а затем нажмите F5, чтобы запустить код. Это начало работать как ожидалось.