Ответ 1
Проверьте файл xml вашей модели, он, вероятно, все еще где-то там. Попробуйте удалить его вручную из этого файла XML, а затем попробуйте обновить его снова. Однако не забудьте сделать резервные копии.
Чтобы улучшить старый проект, я вынужден обстоятельствами использовать VS 2008 и Framework 3.5. У меня возникают проблемы с edmx, показывающим странное поведение и не обновляющее сущности по мере необходимости.
Edmx выдает мне вышеприведенную ошибку, но когда я перехожу в соответствующую таблицу и щелкаю ее правой кнопкой мыши - "Обновить модель из базы данных" нет никаких изменений, ошибка все еще существует.
Если я удалю таблицу из диаграммы, выбрав ее и нажав del, тогда в обозревателе моделей она исчезнет из базы .Database, но при нажатии "Обновить модель из базы данных" я не вижу я в списке "Добавить", все, что я могу сделать, это "Обновить" таблицу, так как я все еще вижу ее в списке обновлений (чего не должно быть, потому что я удалил ее!)
Проверьте файл xml вашей модели, он, вероятно, все еще где-то там. Попробуйте удалить его вручную из этого файла XML, а затем попробуйте обновить его снова. Однако не забудьте сделать резервные копии.
У меня возникла эта проблема, когда я изменил имя столбца от CampaignKey
до CampaignCode
. После изменения БД я пошел в конструктор .edmx
, щелкнул правой кнопкой мыши и выбрал Обновить модель из базы данных. Затем, когда я скомпилировал, я получил ошибку:
Ошибка 11009: Свойство
CampaignKey
не отображается.
Более подробно рассмотрев таблицу в дизайнере, я показал, что Visual Studio создала новое поле CampaignCode
, как в БД. Но он также оставил там старое поле CampaignKey
, вызывая ошибку, поскольку она больше не существует в БД.
Чтобы устранить проблему, я щелкнул правой кнопкой мыши по полю CampaignKey
в моей таблице в дизайнере и выбрал Удалить.
После этого я сохранил .edmx
, скомпилировал и ошибка исчезла.
Я получил эту же ошибку до того, как изменится регистр имен столбцов в таблицах или представлениях. Например, если в представлении есть столбец с именем "OrderID", а затем имя столбца изменяется на "OrderId", тогда он выдаст ошибку "Property" OrderID "не отображается". Это можно решить, изменив случай на то, как оно существует в модели.
Иногда обновление проекта вызывает ошибки.
Просто убедитесь, что вы скопировали все свои данные в любом случае.
Когда мы добавляем модель сущности в наш проект, она добавляет соответствующую строку для подключения к web.config. Теперь, когда вы удаляете модель из проекта, даже тогда строка соединения все еще находится там в web.config.
Итак, сделайте следующие шаги:
Надеюсь, он должен работать.
Я открыл файл edmx в Notepad и удалил неправильное поле. Затем я обновил модель еще раз в дизайнере
Я знаю, что этот вопрос касался VS 2008 и "восстановления" модели, но для тех, кто находит это, как я сделал, когда у меня была такая же ошибка 11009 в VS 2015, я сначала попробовал "Обновить модель из базы данных" до no avail, затем я, наконец, исправил его, щелкнув правой кнопкой мыши таблицу модели в проекте .edmx и выбрав Table Mapping. Мне не нужно было удалять модель. Моя модель связана с таблицей db.
У меня была такая же ошибка, когда я изменил имя столбца в базе данных и обновил базу данных из модели. Мне не удалось найти исходное имя в любом месте решения. Я решил это просто
У меня была такая же проблема с Visual Studio 2017 и Entity Framework 6 в первой модели базы данных, обновив ее, чтобы получить новые столбцы.
Я пробовал все выше, но единственное, что работало, это удалить EDMX и создать новый.
У меня есть эта ошибка (Ошибка 3007: проблема в отображении фрагментов, начинающихся со строк...), после добавления таблицы в .edmx
Сначала я удаляю последнюю добавленную таблицу, затем я заново обновляю модель с этой таблицей, но отмечаю флажок "включить ключ":
В моем случае я добавил новое скалярное свойство с именем 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
Чтобы это исправить, я сделал следующее:
.edmx
в коде Visual Studio;table_name
;В двух местах отсутствовали сопоставления:
<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, чтобы запустить код. Это начало работать как ожидалось.