У меня есть эталонное приложение, которое я использую для решения проблем DDD, и сейчас я сосредоточен на постоянстве Альтернативным названием для этого поста могли быть инструменты и методы персистентности DDD / TDD, но это (очень) широкая тема, и у меня есть конкретный вопрос по SQL Server.
Я собираюсь обозначить свой текущий набор инструментов в этом абзаце в качестве фона, поэтому не стесняйтесь пропустить его, чтобы просто ответить на вопрос. Я использую NHibernate, Fluent NHibernate, Rhino, Visual Studio 2008 и SQL Server. В настоящее время я думаю о том, чтобы использовать NHibernate для генерации БД после любого изменения отображения данных, посмотреть на сгенерированные таблицы в VS 2008 и посмотреть, все ли мои тесты на постоянство отображения пройдены. Первоначально я хотел использовать SQLite в качестве тестовой базы данных, но я скептически отношусь к тому, что это точный показатель правильного отображения в некоторых отношениях (например, ссылочная целостность). Затем я попытался использовать SQL Ce, но мне было неприятно смотреть на сгенерированные таблицы с помощью VS. Вот почему я сейчас решил просто использовать SQL Server.
Следующий объект команды генерирует БД:
public class GenerateNewDb_SqlServer : ICommand
{
public GenerateNewDb_SqlServer(Configuration cfg)
: base(string.Format("Update a Sql Server Database"))
{
_cfg = cfg;
}
public override void Execute()
{
try
{
var schema = new SchemaExport(_cfg);
schema.Create(true, true);
}
catch (Exception ex)
{
Console.WriteLine("Schema Export Error Message: " + ex);
}
}
}
Проблема в том, что старые объекты базы данных все еще там. Мне нужно каким-то образом удалять всю базу данных sql server каждый раз перед использованием инструмента схемы NHibernate для ее создания. Может кто-нибудь сказать, пожалуйста, как это сделать в коде?
Есть ли что-то из объекта NHibernate.Cfg.Configuration, которое я могу использовать для удаления БД? Как будет выглядеть код?
Cheers,
Berryl