.Net核心交易另一个Dll

时间:2018-03-23 07:18:44

标签: c# entity-framework asp.net-core .net-core

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();
                }
            }

1 个答案:

答案 0 :(得分:0)

他们使用不同的交易。如我所见,不要开始新的交易,您使用相同的数据库上下文,因此无需在paramsInsert中启动交易,从中删除using (var transaction = db.Database.BeginTransaction())

相关问题