DbScoped.SugarScope 发现没办法保证一致性 返回
SqlSugar
老数据
4
3653
悬赏:5 飞吻
SqlSugar.SqlSugarScope db = DbScoped.SugarScope;
使用 Sqlsugar 注入最新方式,我发现我每个class像这样子直接获取db对象,好像没办法rollback,
我开启事务也没办法,感觉都是单独执行,这要怎么修正才开保证一致性;
以下是我代码的写法,我需要调整什么才可以保证呢
class A
{
SqlSugar.SqlSugarScope db = DbScoped.SugarScope;
public void b(){
try{
db.BeginTran();
db.CommitTran();
}catch(){
db.Rollback();
}
}
}
热忱回答(4)
-
fate stay night VIP0
2021/8/301.db.BeginTran();
2. 代码
3. db.CommitTran();
必须要在同一个上下文才能有效果 ,如果有疑问可以写个DEMO
0 回复 -
fate stay night VIP0
2021/8/30如果不能回滚或者提交大概率是 1 2 3 的 db.contextid不一样
0 回复 -
fate stay night VIP0
2021/8/30public class Test001 { public int id { get; set; } } [HttpGet] public object Get() { var db=DbScoped.SugarScope; db.CodeFirst.InitTables<Test001>();//建表 int trancount = 0; int rollbackcount = 0; db.BeginTran(); db.Insertable(new Test001() { id = 1 }).ExecuteCommand(); trancount = db.Queryable<Test001>().Count(); db.Insertable(new Test001() { id = 1 }).ExecuteCommand(); trancount = db.Queryable<Test001>().Count(); db.Insertable(new Test001() { id = 1 }).ExecuteCommand(); trancount = db.Queryable<Test001>().Count(); db.RollbackTran(); rollbackcount= db.Queryable<Test001>().Count(); return new { trancount= trancount, rollbackcount= rollbackcount }; }完整用例,插入3条回滚成功
0 回复 -
fate stay night VIP0
2021/8/30如果有疑问像上面给我一个能重现的用例
0 回复