Подобно тому, как вы используете контроль версий для исходного кода, вы должны использовать контроль версий для схемы базы данных, особенно если вы собираетесь предоставлять функциональность обновления для вашего приложения. Есть некоторые инструменты, которые могут вам помочь, но я предпочитаю делать что-то вручную, используя XML-файл с командами SQL, чтобы обновить ревизию или версию схемы, что-то вроде этого:
<Revision Id="3">
<Up>
<SqlCommand>CREATE TABLE [Category] ( [Id] BigInt Primary Key, [Name] nvarchar(255) )</SqlCommand>
<SqlCommand>ALTER TABLE [Group] ADD CanRead bigint NULL</SqlCommand>
<SqlCommand>UPDATE [SysValue] SET [Value] = '3' WHERE [Name] = 'Revision'</SqlCommand>
</Up>
<Down>
<SqlCommand>DELETE TABLE [Category]</SqlCommand>
<SqlCommand>ALTER TABLE [Group] DROP COLUMN [CanRead]</SqlCommand>
<SqlCommand>UPDATE [SysValue] SET [Value] = '2' WHERE [Name] = 'Revision'</SqlCommand>
</Down>
</Revision>
Хорошо, что если вы правильно пишете команды SQL, вы можете изменять схему без потери данных, вы можете писать сложные запросы, копировать данные во временную таблицу, затем резко изменять эту таблицу и копировать данные обратно, конвертировать данные и т. Д.