Сведения о вопросе

HOLY

17:07, 28th August, 2020

Теги

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

Просмотров: 529   Ответов: 7

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

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

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

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

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

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

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



  Сведения об ответе

SEEYOU

13:48, 11th August, 2020

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

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

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

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


  Сведения об ответе

DINO

08:21, 23rd August, 2020

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

Ключи являются убийцей для меня - мне еще предстоит внести какие-либо изменения в отношение внешнего ключа или добавить первичный ключ в таблицу и заставить программу обновления работать правильно (в том смысле, что она даст ошибку компиляции сгенерированного кода) - но для решения этой проблемы достаточно просто удалить модель и повторно импортировать (это займет всего минуту)-это явно не идеально, но у меня никогда не было сбоя от импорта 'fresh'.


  Сведения об ответе

ITSME

01:34, 26th August, 2020

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


  Сведения об ответе

SSESION

14:20, 4th August, 2020

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

Овации.

Румяный


  Сведения об ответе

COOL

23:57, 8th August, 2020

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

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

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

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

    В противном случае, вы должны ждать выпуска EF 4.0 (it CTP 1 now), они объявили,что будут предоставлять функции create, delete, update DatabaseScript.

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


  Сведения об ответе

crush

22:02, 17th August, 2020

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


  Сведения об ответе

SEEYOU

22:44, 22nd August, 2020

Я делаю это (и я делаю все то, что вы упомянули, плюс переименование столбцов), внося изменения в базу данных и восстанавливая код EF, используя сначала код EF.

Я не вмешиваюсь в первые классы кода EF для хороших или плохих (включая бессмысленно именованные столбцы для отношений), чтобы облегчить процесс.

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться