Как лучше всего обновить приложение / базу данных asp.net после изменения схемы? - PullRequest
2 голосов
/ 27 ноября 2008

Одно из основных полей, присутствующих в нескольких основных таблицах базы данных моего приложения, необходимо изменить с varchar (5) на varchar (8). Список хранимых процедур, которые зависят от этих таблиц, очень длинный, не говоря уже об изменениях, которые необходимо внести в мой уровень доступа к данным (ASP.NET 2.0 DataSet с TableAdapters).

Есть ли способ автоматически (и безопасно ) изменить тип важного поля и распространить изменения на все хранимые процедуры / вызовы уровня доступа к данным, которые зависят от него?

Я использую базу данных SQL Server 2005.

Ответы [ 3 ]

3 голосов
/ 27 ноября 2008

Вас может заинтересовать это эссе , написанное Скоттом Эмблером по рефакторингу базы данных. Я думаю, что у него также есть книга об этом. Я считаю, что основная идея состоит в том, чтобы ввести новый столбец с правильной шириной, скопировать существующие данные в новый столбец, реализовать триггер для синхронизации любых новых вставок / обновлений, перенести SP / DAL для использования нового столбца, затем удалите старую колонку, когда закончите. Весь новый код использует новый столбец, очевидно. К сожалению, я не знаю ни одного автоматизированного способа обновления вашего SP / DAL.

1 голос
/ 27 ноября 2008

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

Лично я бы использовал это как возможность взглянуть на свой уровень доступа к данным. То, что вы изменили, очень мало, но оно оказывает глубокое влияние на систему, почему?

Если вы предвидите какие-либо изменения в системе, я бы определенно подумал о том, как устроен DAL, и почему небольшое изменение оказывает такой большой эффект.

1 голос
/ 27 ноября 2008

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

Если вас интересует что-то вроде .netTiers, вы можете проверить их сайт здесь .

К сожалению, я не знаю способа легко обновить все, что у вас есть. Однако вы можете позаботиться обо всех изменениях базы данных, используя такой инструмент, как SQL Refactor от Redgate (см. здесь ).

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