Подтвердить что ты не робот

Обновление вашего edmx для отражения изменений, внесенных в ваш db (.net linq-to-entity)

  • Итак, у меня есть мой edmx.
  • Затем я немного меняю свою базу данных, меняя столбец на NOT NULL, чтобы разрешить NULL.
  • Я перехожу в мой edmx, щелкните правой кнопкой мыши и выберите "Обновить модель из базы данных".

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

4b9b3361

Ответ 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. щелкните правой кнопкой мыши по нему и выберите "Запустить пользовательский инструмент":

запустить настраиваемый инструмент

  1. Сделайте то же самое для файла .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

Удаление всех таблиц из представления дизайнера и обновление после этого работает для меня