我正在构建一个使用NHibernate生成数据库模式的新应用程序,但我可以看到将来可能出现的问题.
显然,当您更新架构时,您使用数据库中的所有数据都会被清除,但人们使用什么样的数据来将任何数据恢复到新数据库.我知道模式的大量更改会使这很难,但是想知道其他人是如何处理这个问题的.
干杯科林G.
PS我不会在实时数据库中使用它来恢复测试数据以进行集成测试和持续集成
在测试时,我们使用NHibernate创建数据库,然后使用一系列构建器来为每个测试夹具创建数据.我们还使用Sqlite进行这些测试,因此它们可以快速闪亮.
我们的建设者看起来像这样:
public class CustomerBuilder : Builder<Customer>
{
string firstName;
string lastName;
Guid id = Guid.Empty;
public override Customer Build()
{
return new Customer() { Id = id, FirstName = firstName, LastName = }
}
public CustomerBuilder WithId(Guid newId)
{
id= newId;
return this;
}
public CustomerBuilder WithFirstName(string newFirstName)
{
firstName = newFirstName;
return this;
}
public CustomerBuilder WithLastName(string newLastName)
{
lastName = newLastName;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
和用法:
var customer = new CustomerBuilder().WithFirstName("John").WithLastName("Doe").Build();
Run Code Online (Sandbox Code Playgroud)
因为每行代码都是用TDD编写的,所以我们从scatch构建了一个全面的数据套件,并且通常会将其中的一些数据重构为工厂,这些工厂将包含上述内容并使得获取虚拟数据变得轻而易举.