Недавно я взял проект .Net, который предоставляет DAOs
из базы данных Microsoft SQL через API ServiceStack REST. Сервер работает под управлением IIS 7.5Лучшая практика - Как расширить БД в проекте ServiceStack.OrmLite .NET?
В AppHost.Configure
полная схема базы данных создается как так ...
var dbFactory = new OrmLiteConnectionFactory(DI.DefaultConnectionString, SqlServerOrmLiteDialectProvider.Instance);
using (var db = dbFactory.OpenDbConnection())
{
if (!db.TableExists(db.GetTableName<SomeSpecificDAO>())) //Create table if not exists
{
db.CreateTable<SomeSpecificDAO>();
db.Insert(new SomeSpecificDAO { Data = 0, AnotherData = "", AnSoOne = });
}
/// alot more tables follow....
}
Когда я теперь хочу продлить DAO
(и, следовательно, добавить новый столбец в таблицу для пример) Я бы сделал это в Visual Studio, протестировал его, и если он сработает, я бы удаленно добавил столбец через Microsoft SQL Server Management Studio на реальном тестовом сервере, так как я не хочу потерять какие-либо данные в базе данных. Это не очень быстро при добавлении только одного столбца, и это может быть очень громоздким, если добавлено больше таблиц/столбцов или f.e. изменяется тип данных ячеек.
Какова наилучшая практика обновления базы данных в Visual Studio и в тестовой системе? Возможно ли даже иметь «подход Code First», где я только расширяю DAO
, а затем обновляю базы данных?
Я думаю, что DbUp был тем, кого я искал. Насколько я понял, это также означает, что я использую DbUp также для настройки схемы db, которую я описал в вопросе, так что у меня есть только сценарии миграции, которые развертываются, когда я «публикую» приложение на сервере. – zlZimon