lib.ParamsInsert通过另一个dll调用。 当throw语句出现问题时,事务将回滚。但是,paramsInsert中的操作无法撤消。
在lib.ParamsInsert中,有一个事务有自己的错误。
spcarikart.Repository lib = new spcarikart.Repository();
using (var transaction = db.Database.BeginTransaction())
{
try
{
var result = db.Acenta.Add(obj).Entity;
var a = lib.ParamsInsert(db, new Params
{
Baslik = "Bahdir",
Deger = "1"
});
// ....Maybe Error other process
db.SaveChanges();
return result;
}
catch (Exception ex)
{
transaction.Rollback();
}
}
ParamsInsert
using (var transaction = db.Database.BeginTransaction())
{
try
{
var resul = db.Params.Add(obj).Entity;
db.SaveChanges();
transaction.Commit();
return resul;
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception();
}
}
答案 0 :(得分:0)
他们使用不同的交易。如我所见,不要开始新的交易,您使用相同的数据库上下文,因此无需在paramsInsert
中启动交易,从中删除using (var transaction = db.Database.BeginTransaction())
。