Обновление схемы базы данных в Entity Framework

Я установил VS SP1 и поиграл с Entity Framework.

Я создал схему из существующей базы данных и попробовал несколько основных операций.

Большинство из них прошло успешно, за исключением обновления схемы базы данных.

Я изменил базу данных всеми основными способами:

  • добавил новую таблицу
  • удалил таблицу
  • добавил новый столбец в существующую таблицу
  • удалил столбец из существующей таблицы
  • изменил тип существующего столбца

Первые три действия прошли успешно, но изменение типа и удаление столбца не сопровождались изменениями в базе данных.

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

Комментарии к вопросу (2)
Решение

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

Вот моя логика:

Во-первых, EF должен быть более чем 1:1 отображением таблиц, поэтому вполне возможно, что если вы удаляете столбец из таблицы A, это не значит, что для этой сущности не должно быть свойства Description. Вы можете просто перенести это свойство в другую таблицу.

Во-вторых, изменение типа может просто сломать сборки. Это единственная причина.

Комментарии (1)

I' ve нашел, что в целом есть все еще довольно много ошибок с ' Модель Обновления от Database' функциональность.

Ключи - убийца для меня - I' ve все же, чтобы иметь любую модификацию, которую я делаю к отношениям внешнего ключа или добавить Первичный ключ к столу и иметь работу updater правильно (в котором это даст собирать ошибку на произведенном кодексе) - но решить проблему it' s простой вопрос удаления модели и переимпортирования (только занимает минуту) - это - меньше, чем идеал, очевидно, но I' у ve никогда не было неудачи от ' fresh' импорт.

Комментарии (1)

Судя по демо-версиям дизайнера, которые я видел, это не безупречный инструмент. Это продукт версии 1.0, поэтому у него должны быть болевые точки. Тип изменения - одна из них, похоже. Наблюдая за дизайнером и генерацией кода, я понял, что один из них сломается либо во время компиляции (маловероятно), либо во время выполнения (когда модель действительно выполняется).

Комментарии (0)

Вам необходимо самостоятельно удалить колонку из дизайнера или XML-файла.

Комментарии (0)

Как упомянуто прежде, Вы можете просто удалить колонку от проектировщика. До изменения типа данных колонки: просто обновите модель от базы данных, тогда идут в отображения стола и выбирают колонку, которую Вы изменили в DB. ценности справа представляют Вашу модель, достаточно странно это не становится обновленным автоматически, но просто выбирает колонку направо и идет в свойства и изменяет тип данных там. Это должно стать выпадающим меню.

Аплодисменты.

Румяный

Комментарии (0)

Я создаю подобное приложение как Ваш требуемый. Но мое решение было к трудно. Я попытаюсь сказать;

  1. Вы должны создать свои собственные классы управления базой данных, и эти объекты будут ответственны за, создают, обновляют схему базы данных (я создал вручную это).

  2. Я видел хорошую статью и исходный код на блог Команды ADO.NET тогда, Вы можете также загрузить EDMTools с этого блога, это открытый источник. И Вы можете также осуществить образцовое поколение и обновить установленный порядок от этого в Ваш проект.

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

Другим путем Вы должны ждать выпуска EF 4.0 (это CTP 1 теперь), они объявили, что обеспечат, создают, удаляют, обновляют функции DatabaseScript.

Хороший замок

Комментарии (0)

Путем I' m выполнение этого (и I' m выполнение всех вещей Вы упоминаете, плюс переименование колонок), внося изменения в базу данных и восстанавливая кодекс EF, используя Кодекс EF Сначала.

I' m не вмешивающийся в Кодовые Первые классы EF для пользы или плохого (включая бессмысленно названные колонки для отношений), чтобы ослабить процесс.

Никакой проектировщик или генератор схемы ORM не будут в состоянии внести изменения в Вашу производственную базу данных, если это ограничило данные в нем. Поэтому Вы должны всегда начинать с проверки, если Ваши изменения DB выполнимы, судите их на базе данных развития и затем адаптируйте свой кодекс, чтобы отразить изменения.

Комментарии (0)