2017-01-19 15 views
1

Недавно я взял проект .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, а затем обновляю базы данных?

ответ

1

Посмотрите на этот existing thread in the ServiceStack Customer Forums, который объясняет различные стратегии обработки изменений схемы db.

+0

Я думаю, что DbUp был тем, кого я искал. Насколько я понял, это также означает, что я использую DbUp также для настройки схемы db, которую я описал в вопросе, так что у меня есть только сценарии миграции, которые развертываются, когда я «публикую» приложение на сервере. – zlZimon