Обновление вашего edmx для отражения изменений, внесенных в вашу базу данных (.net linq-to-entity) - PullRequest
44 голосов
/ 27 марта 2009
  • Итак, я сделал мой edmx.
  • Затем я немного изменяю свою базу данных, меняя столбец с NOT NULL на NULL.
  • Я захожу в свой edmx, щелкаю правой кнопкой мыши и выбираю «Обновить модель из базы данных»

Теперь я вхожу в свою программу, и она фактически не обновляется ... Я не могу поставить ноль в столбце. Что мне нужно сделать, чтобы правильно обновить edmx? Спасибо.

Ответы [ 11 ]

81 голосов
/ 08 октября 2009

Обновление / удаление из EDMX не всегда функционально. Если модель не обновляется при нажатии Обновить модель из базы данных, скажем, когда вы обновили представление / таблицу в БД, сделайте следующее:

1) Удалить вид / таблицу из диаграммы модели
2) Переключите EDMX в представление XML (щелкните правой кнопкой мыши файл EDMX и выберите «Открыть с помощью»)
3) Поиск и удаление элементов сущности xml
4) Вернитесь в режим просмотра EDMX
5) Нажмите Обновить модель из базы данных

Это должно отражать любые изменения, которые вы внесли в базу данных в EDMX. Это громоздко, но работает без нареканий.

В идеальном мире я ожидал бы, что Модель обновления из базы данных будет синхронизировать изменения от БД до EDMX. Но это не работает большую часть времени.

19 голосов
/ 09 октября 2012

Что я успешно сделал, так это (VB.Net).

  1. вносить обновления в базу данных по мере необходимости / требуется
  2. Выберите «Обновить из базы данных» в модели EDMX, графическая модель будет правильно отображать новую структуру / таблицы
  3. Разверните проект, чтобы он отображал все связанные файлы
  4. Имеют значение два файла с расширением "tt": сначала возьмите один БЕЗ .Context. перед расширением tt. щелкните его правой кнопкой мыши и выберите «Запустить пользовательский инструмент»:

run custom tool

  1. Сделайте то же самое для файла .tt с .Context. в его названии. Весь ваш код и классы логической модели будут обновлены.
14 голосов
/ 27 марта 2009

Выбор модели обновления из базы данных - лучший способ обновления EDMX. Существуют определенные свойства, которые не обновляются на концептуальном слое.

Убедитесь, что ваш слой Store обновлен, просмотрев его на панели инструментов Model Viewer. Если Магазин был обновлен должным образом, то все в порядке, и ваша база данных синхронизирована. Если это так, перейдите в визуальный дизайнер, щелкните поле, перейдите к свойствам и обновите свойство NotNull на Концептуальной стороне.

5 голосов
/ 15 декабря 2009

Да, это не работает большую часть времени: - /

«Лучший метод» (потому что он работает систематически) - удалить файл EDMX и сгенерировать его снова. Но не забудьте удалить строку подключения в App.config (иначе VS2008 wizzard добавит суффикс к имени объекта по умолчанию) и очистите кеш.

Я надеюсь, что эти инструменты будут работать лучше в следующем выпуске, поскольку это резко снижает производительность ...

4 голосов
/ 24 апреля 2015

1. Создайте проект после обновления файла EDMX.

2. Щелкните правой кнопкой мыши свой файл .tt в обозревателе решений.

3.Выберите «Запустить пользовательский инструмент».

Это обновит файл .tt.

Источник: здесь !

4 голосов
/ 14 июня 2014

Это самый быстрый и простой способ:

  1. Удалить вид / таблицу из диаграммы .edmx.
  2. СЕЙЧАС используйте Обновление модели из базы данных, чтобы добавить таблицу обратно.
2 голосов
/ 02 октября 2014

Этот ответ лучше: https://stackoverflow.com/a/23886016/1014884

Любое ручное редактирование созрело для ошибок или будет потеряно, если кто-то использует какой-либо инструмент, такой как мастер. Удаление и обновление с помощью мастера намного лучше.

2 голосов
/ 14 января 2010

Откройте файл edmx в редакторе XML VS и проверьте, не было ли ошибок, созданных при попытке обновления.

  <!--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>-->

В приведенном выше случае ... Добавление первичного ключа к рассматриваемой таблице привело к работе «Обновления модели из базы данных».

1 голос
/ 25 июля 2018

Представление, созданное мной в базе данных, не появилось в конструкторе (после выбора «Обновить модель из базы данных ...» и добавления флажка рядом с именем представления). Я не видел сообщения об ошибке, пока не переключил EDMX в представление xml:

  • Щелкните правой кнопкой мыши на файле edmx
  • Выберите "Открыть с помощью ..."
  • Выберите «Автоматический выбор редактора (XML)»
  • Нажмите «Найти» и найдите имя для просмотра

В EDMX XML я нашел:

«Обнаружены ошибки во время генерации: предупреждение 6013: таблица / представление» (представление name) 'не определен первичный ключ и нет действительного первичного ключа может быть выведено. Эта таблица / представление была исключена. Чтобы использовать сущности, вам нужно будет пересмотреть свою схему, добавить правильные ключи и раскомментируйте это. "

Я изменил представление, чтобы иметь первичный ключ. Затем я открыл конструктор edmx и запустил «Обновить модель из базы данных ...», после чего представление появилось в конструкторе, как и ожидалось, без ошибок.

1 голос
/ 28 октября 2010

Не обновляется, например, максимальная длина строковых атрибутов!

Если вы работаете с TFS, удаление файла нецелесообразно, вы хотите сохранить историю и не влиять на других.

Для меня это работает с небольшим отдельным проектом, который я могу использовать, чтобы полностью воссоздать файл edmx, я открываю его в xml, копирую вставить в существующий и перемещаю одну фигуру в модели, чтобы VS воссоздал Файл .cs. Вуаля, теперь оно обновлено.

...