Обновление вашего edmx для отражения изменений, внесенных в ваш db (.net linq-to-entity)
- Итак, у меня есть мой edmx.
- Затем я немного меняю свою базу данных, меняя столбец на NOT NULL, чтобы разрешить NULL.
- Я перехожу в мой edmx, щелкните правой кнопкой мыши и выберите "Обновить модель из базы данных".
Теперь я перехожу в свою программу, и он действительно не обновляется... Я не могу поместить нуль в столбец. Что мне нужно сделать для правильного обновления edmx? Спасибо.
Ответы
Ответ 1
Выбор модели обновления из базы данных - лучший способ для обновления вашего EDMX. Есть определенные свойства, которые не обновляются на уровне Conceptual.
Убедитесь, что ваш уровень Store обновлен, просмотрев его в панели инструментов Model Viewer. Если магазин был правильно обновлен, тогда все в порядке, и ваша база данных синхронизирована. Если это так, зайдите в визуальный конструктор, щелкните поле, перейдите к свойствам и обновите свойство NotNull на стороне Conceptual.
Ответ 2
Обновление/удаление из EDMX не всегда работает. Если модель не обновляется при нажатии "Обновить модель из базы данных", скажем, когда вы обновили представление/таблицу в БД, сделайте следующее:
1) Удалить представление/таблицу из диаграммы модели
2) Переключите EDMX в xml-представление (щелкните правой кнопкой мыши файл edmx и выберите "Открыть с" )
3) Поиск и удаление элементов сущности xml
4) Вернитесь в режим EDMX
5) Нажмите "Обновить модель из базы данных"
Это должно отражать любые изменения, внесенные вами в БД, на ваш EDMX. Это громоздко, но работает безупречно.
В идеальном мире я бы ожидал, что модель обновления из базы данных будет синхронизировать изменения с DB на EDMX. Но это не работает большую часть времени.
Ответ 3
Я успешно выполнил это (VB.Net).
- производить обновление базы данных по желанию/обязательно
- Выберите "Обновление из базы данных" в модели EDMX, графическая модель будет правильно отображать новую структуру/таблицы
- Разверните проект, чтобы он показывал все связанные файлы
- Два файла с расширением "tt" - это те, которые имеют значение: сначала возьмите один из БЕЗ. Контекста. перед расширением tt. щелкните правой кнопкой мыши по нему и выберите "Запустить пользовательский инструмент":
![запустить настраиваемый инструмент]()
- Сделайте то же самое для файла .tt с .Context. от его имени. Все ваши классы кода и логической модели будут обновлены.
Ответ 4
Да, он не работает большую часть времени: -/
"Лучший метод" (потому что он работает систематически) - это удалить файл EDMX и сгенерировать его снова.
Но не забудьте удалить строку подключения в App.config(иначе VS2008 wizzard добавит суффикс к имени объекта по умолчанию) и очистит кеш.
Я надеюсь, что эти инструменты будут работать лучше в следующем выпуске, потому что это резко снижает производительность...
Ответ 5
ЭТО БЫСТРЫЙ ЛЕГКИЙ ПУТЬ:
- Удалить представление/таблицу из диаграммы .edmx.
- СЕЙЧАС используйте модель обновления из базы данных, чтобы добавить таблицу обратно.
Ответ 6
1.Build проект после обновления файла EDMX.
2. Щелкните правой кнопкой мыши файл .tt в проводнике решений.
3. Выберите "Запустить пользовательский инструмент".
Это обновит файл .tt.
Источник: здесь!
Ответ 7
Откройте файл edmx в редакторе VS XML и проверьте, не были ли ошибки, возникшие при попытке обновления.
<!--Errors Found During Generation:
warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key
defined and no valid primary key could be inferred. This table/view has
been excluded. To use the entity you will need to review your schema,
add the correct keys and uncomment it.
<EntityType Name="snafu">
<Property Name="snafu_column" Type="smallint" />
</EntityType>-->
В приведенном выше случае... Добавление первичного ключа к рассматриваемой таблице вызвало работу "Обновить модель из базы данных".
Ответ 8
Он не обновляет, например, максимальную длину для атрибутов строки!
Если вы работаете с TFS, это нехорошо удалять файл, вы хотите сохранить историю и не влиять на других.
Для меня это работает, имея отдельный проект, который я могу использовать, чтобы полностью воссоздать файл edmx, я открываю его в xml, копирую в существующую и перемещаю одну фигуру в модели, чтобы VS воссоздал .cs файл. Voila, теперь он обновлен.
Ответ 9
Этот ответ лучше: fooobar.com/questions/128435/...
Любое ручное редактирование подходит для ошибок или будет потеряно, если кто-то использует любой инструмент, например мастер. Удаление и обновление с помощью мастера намного лучше.
Ответ 10
Удаление всех таблиц из представления дизайнера и обновление после этого работает для меня