Respawn - 重生
Respawn 是一个非常小但是实用的工具,它可以很方便的将测试或开发数据库重置为空状态。
这特别适合在集成测试中使用,集成测试运行之后,通过 Respawn 自动化的清除数据,回到测试之前的数据库状态。.
使用 Nuget 安装 Respawn
Install-Package Respawn
或者使用 .NET Core CLI:
dotnet add package Respawn
通过使用 Respawner 进行配置,如下
var respawner = await Respawner.CreateAsync(connection, new RespawnerOptions
{
TablesToIgnore = new Table[]
{
"sysdiagrams",
"tblUser",
"tblObjectType",
new Table("MyOtherSchema", "MyOtherTable")
},
SchemasToExclude = new []
{
"RoundhousE"
}
});
上面代码指定了处理需要跳过的表或者 Schema 。
使用下面的代码,将数据库重置为干净的状态。
await respawner.ResetAsync("MyConnectionStringName");
如果您使用的是 SQL Server 之外的数据库,可以传递 DbConnection:
using (var conn = new NpgsqlConnection("ConnectionString"))
{
await conn.OpenAsync();
await respawner.ResetAsync(conn);
}
Respawn 智能地检查 SQL 元数据,根据表之间的外键关系构建要删除的表的确定顺序。它导航这些关系并构建 DELETE 脚本,从没有关系的表开始,向内移动,直到考虑到所有表。
项目地址
https://github.com/jbogard/Respawn