Поддерживать модель данных объекта при удалении столбца из базы данных, которая используется во многих местах? - PullRequest
2 голосов
/ 10 августа 2011

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

Ответы [ 2 ]

1 голос
/ 10 августа 2011

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

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

В случае, если столбец не вычислен, удаление столбца из базы данных означает потерюданные.И если это приемлемо, то это, по сути, указывает на изменение базовой бизнес-модели, когда эта точка данных становится неактуальной.У вас есть два варианта здесь -

  1. Выберите его и измените код, чтобы не использовать это свойство - это по сути означает, что вы будете корректировать свой код для изменения бизнес-модели / процесса, что в конечном итоге вам придетсяв какое-то время.
  2. Сохраните столбец в базе данных в течение некоторого времени, но у него будет полное значение по умолчанию.Отметьте свойство модели объекта как устаревшее, чтобы оно начало выдавать предупреждение.Не торопитесь вносить изменения в код, конечная цель - через некоторое время удалить использование свойства, а затем удалить столбец базы данных.
1 голос
/ 10 августа 2011

Этот вопрос полезен только для приложений, которые еще не были выпущены.Если приложение было выпущено и этот столбец уже существует, оно не будет удалено или удалено.Существующие клиенты могут зависеть от этого столбца для данных, он может быть привязан к логике приложения и т. Д. По соображениям совместимости он не будет удален.

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

В общем, лучше сохранить его, если приложение не находится на ранней стадии разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...