Таблицы не отображаются при повторном добавлении их в модель объекта (edmx) - PullRequest
17 голосов
/ 03 февраля 2010

У меня есть БД с 5 таблицами.Сначала я добавил эти таблицы, но затем решил удалить некоторые из-за ошибки компиляции отношений.

Теперь, когда я хочу добавить их обратно, я открываю файл edmx ->обновить модель из базы данных ... Я не вижу эти таблицы на вкладке добавления, а только на вкладке "обновление".

Как я могу добавить их обратно?

Ответы [ 5 ]

24 голосов
/ 05 февраля 2010

Чтобы заново добавить таблицу в вашу модель, вам сначала нужно удалить таблицу из вашей модели.(список таблиц отображается в дереве [model.Store] (см. панель « Model Browser » - вы можете открыть его из меню, вызываемого правой кнопкой мыши). При запуске «Обновить модель из базы данных»... »таблица появится на вкладке« Добавить »в первом шаге« Мастер обновления ».

Шаги для завершения:

  1. Закройте модель в Visual Studio.
  2. Откройте файл .edmx в текстовом редакторе.
  3. Найдите и удалите элементы сущности xml (см. Примечания ниже).
  4. Откройте модель в Visual Studio.
  5. Нажмите Обновить модель из базы данных.

Чтобы удалить все ссылки на таблицу в вашей модели:

  • В элементе EntityContainer удалите все EntitySet'дочерние элементы, для атрибута Name которых установлено значение [TableNameToReAdd].
  • В элементе EntityContainer удалите все дочерние элементы AssociationSet, где существует элемент End, имеющий свой EntitySet.'атрибут установлен в значение [TableNameToReAdd].
  • В элементе EntityContainer удалите все дочерние элементы EntityType, для которых атрибуту Name присвоено значение [TableNameToReAdd].
  • В элементе EntityContainer удалите все дочерние элементы Association, в которых существует элемент End, для атрибута Role которого установлено значение [TableNameToReAdd].
8 голосов
/ 11 июля 2015

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

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

Ссылка, которая решила мою проблему.

Обновлено

Если когда-нибудь вы все сделали нормально, все равно не отразите изменения ни добавлением нового столбца, ни изменением типа данных.

Лучшим способом для этого является попытка обновления вручную, но пока нет надежды, тогда, как предложено @mathijsuitmegen, удалите и добавьте таблицу, но этот вариант предпочтительнее.

3 голосов
/ 14 января 2016

Более простое решение в Model Browser под

[modelName].Store -> Tables/ViewS

удалить таблицу, которая не отображается. Затем щелкните правой кнопкой мыши модель "update from database", и таблица должна быть там.

2 голосов
/ 13 октября 2010

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

примечание: я хотел бы только этого, если база данных еще не работает!

Поэтому в SQL Server Management Studio сначала создайте скрипт :
щелкните правой кнопкой мышив таблице (таблицах), которые соответствуют отсутствующей сущности в вашей модели.Выберите «Таблица сценариев как», «СОЗДАТЬ В», «Окно нового редактора запросов».

Второй шаг - удалить таблицу .Снова щелкните правой кнопкой мыши и выберите «Удалить».Подтвердите удаление.

Вернувшись в Visual Studio, выполните обновление модели .

Вернитесь в SQL Server Management Studio и запустите сценарий создания , который вы только что создали.
Таблица будет снова добавлена ​​в вашу базу данных.

В Visual Studio теперь вы можете сделать обновление снова , ваша таблица появится на вкладке «Добавить» !!!

0 голосов
/ 07 декабря 2013

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

...