jbogard/Respawn如何实现SQL重设种子,私有属性ReseedSql该如何设置
解决方法
不需要重写Checkpoint类,ReseedSql是库内部自动生成的属性,设计上就不对外开放赋值入口,按以下步骤操作即可实现重设种子需求:
- 初始化
Checkpoint实例时,将WithReseed属性设置为true即可开启重设种子功能,开启后库会在内部自动生成对应数据库的重设种子SQL,赋值给私有ReseedSql属性 - 若使用的不是SQL Server数据库,需将
DbAdapter属性设置为对应数据库的适配器,不同数据库的重设种子语法由对应适配器内部处理 - 调用
Reset/ResetAsync方法传入数据库连接即可,库会自动执行数据清理+种子重置操作,不需要手动操作ReseedSql属性
如果有自定义重设种子逻辑的特殊需求,只需自定义实现IDbAdapter接口,重写种子SQL生成逻辑,再将Checkpoint的DbAdapter属性设置为自定义适配器的实例即可,依然不需要重写Checkpoint类。
示例代码
var checkpoint = new Checkpoint { WithReseed = true, // 开启种子重置 TablesToIgnore = new[] { "__EFMigrationsHistory" }, DbAdapter = DbAdapter.SqlServer }; // 执行重置,自动包含重设种子操作 await checkpoint.ResetAsync(yourDbConnection);
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

