Таблицы не отображаются при повторном добавлении их в сущность-модель (edmx)
У меня есть db с 5 таблицами. Сначала я добавил эти таблицы, но потом решил удалить некоторые из-за ошибки компиляции отношения.
Теперь, когда я хочу добавить их обратно, я открываю файл edmx file → update из базы данных... Я не вижу эти таблицы под вкладкой добавления, но только на вкладке "Обновить".
Как я могу добавить их обратно?
Ответы
Ответ 1
Чтобы повторно добавить таблицу в вашу модель, вам сначала нужно удалить таблицу из вашей модели. (список таблиц отображается в дереве [model.Store] (см. панель " Модель браузера", вы можете открыть его из меню мыши правой кнопкой мыши).
Когда вы запустите "Обновить модель из базы данных...", таблица появится на вкладке "Добавить" на первом шаге "Мастер обновления".
Шаги для завершения:
- Закройте свою модель в Visual
Студия.
- Откройте файл .edmx в
Текстовый редактор.
- Поиск и удаление
элементы сущности xml (см. примечания
ниже).
- Откройте вашу модель в Visual
Студия.
- Нажмите "Обновить модель".
База данных.
Чтобы удалить все ссылки на таблицу в вашей модели:
- В элементе EntityContainer,
удалить все дочерние элементы EntitySet
которые имеют атрибут "Имя",
значение [TableNameToReAdd].
- В
Элемент EntityContainer, удалить все
Детальные элементы 'AssociationSet', где
существует элемент "End", который имеет
их атрибут EntitySet, установленный для
значение [TableNameToReAdd].
- В
Элемент EntityContainer, удалить все
Детальные элементы EntityType, где
которые имеют атрибут "Имя",
значение [TableNameToReAdd].
- В
Элемент EntityContainer, удалить все
Детальные элементы "Ассоциации", где
Существует элемент "Конец", который имеет
Атрибут "Роль" установлен в значение
[TableNameToReAdd].
Ответ 2
Я читаю этот и другой вариант поиска, но, наконец, я нашел другого ответа, который поможет мне сократить эту проблему.
Из сообщения об ошибке видно, что у одной из ваших таблиц/представлений нет первичный ключ. EF требует, чтобы каждая таблица имела первичный ключ, чтобы генерировать ключи Entity. Вы все еще можете запускать свое приложение, но я настоятельно рекомендую вам добавить первичные ключи как предупрежденные.
Ссылка, которая решила мою проблему.
Обновление
Если какое-то время вы все сделали хорошо, все равно не отражаете изменения, добавляя новый столбец или изменяя тип данных.
Лучший способ попытаться обновить вручную, все же нет никакой надежды, затем, как предлагается @mathijsuitmegen, удалите и добавьте таблицу, но это последний вариант, который вы предпочитаете.
Ответ 3
Вы хотите повторно добавить объект после его удаления в модели.
Помимо редактирования файла edmx есть еще один способ сделать это.
Вам придется временно удалить таблицу из базы данных.
note: Я бы это сделал только в том случае, если база данных еще не создана!
Итак, в SQL Server Management Studio сначала создайте script:
щелкните правой кнопкой мыши таблицу (таблицы), которая соответствует отсутствующему объекту в вашей модели. Выберите 'Script Таблица как', 'CREATE To', 'New Query Editor Window'.
Второй шаг - удалить таблицу. Щелкните правой кнопкой мыши еще раз и выберите "Удалить". Подтвердите удаление.
В Visual Studio выполните обновление модели .
Вернитесь в SQL Server Management Studio и запустите созданный script.
Таблица снова будет добавлена в вашу базу данных.
В Visual Studio теперь вы можете выполнить обновление снова, таблица будет отображаться на вкладке "Добавить".
Ответ 4
Более легкое решение находится в Model Browser
в разделе
[modelName].Store -> Tables/ViewS
удалить таблицу, которая не отображается. Затем щелкните правой кнопкой мыши на модели "update from database
", и таблица должна быть там.
Ответ 5
В дополнение к приведенному выше списку ссылок, которые необходимо удалить из модели, рассмотрите возможность удаления элемента AssociationSetMapping, если ваша таблица имеет ассоциативные отношения с другими таблицами.