netcore 中 使用 TransactionScope

qq_31381279 2017-11-24 06:16:02
在netcore2.0中使用 TransactionScope是无效的?,有没有人遇到过这种问题?
orm使用的dapper
  using (System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope())
{
using (var conn = SqlConnection())
{
try
{
logger.Trace("事务1:" + System.Transactions.Transaction.Current.TransactionInformation.LocalIdentifier);
//会员积分账户
var wallet = Dao.UserScoreWalletDao.Singleton().QueryAccount(transaction.uid, transaction.pool);
if (!wallet.ok)
{
return Result.NotOk<bool>($"获取会员积分账户错误:{wallet.message}");
}
var result = Dao.UserScoreWalletDao.Singleton().ExecuteTransaction(new UserScoreTransaction()
{
amount = transaction.trans_trade_score,
ctime = DateTime.Now,
kind = UserScoreTransaction.Kind_Income,
notes = $"积分到账[{transaction.id}]",
pool = transaction.pool,
refer = transaction.id.ToString(),
wid = wallet.value.wid
});
if (!result.ok || string.IsNullOrEmpty(result.value))
{
return Result.NotOk<bool>($"会员积分到账错误:{result.message}");
}
scope.Complete();
}
catch (Exception ex)
{
return Result.Exception<bool>(ex);
}
}
}


在 ExecuteTransaction中:
   public Result<string> ExecuteTransaction(T wat)
{
try
{
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
logger.Trace("事务2:" + System.Transactions.Transaction.Current.TransactionInformation.LocalIdentifier);
var result = ExecuteTransactionIsolate(wat);
if (result.ok)
{
scope.Complete();
}
return result;
}
}
catch (Exception exp)
{
return Result<string>.Exception(exp);
}
}

public Result<string> ExecuteTransactionIsolate(T wat)
{
using (var db = MySqlDB.FromConfiguration(this.DB))
{
//多表数据操作
}
}
...全文
1121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiazhi 2017-11-25
  • 打赏
  • 举报
回复
用过conn.BeginTranscation来做事务的, conn.Execute的时候把事务传进去的
圣殿骑士18 2017-11-25
  • 打赏
  • 举报
回复
TransactionScope不好用,很多情况下都不支持。用1楼的BeginTranscation
开发项目背景:其一,作为学生我们已经学习了很多的基础语法,但是我们还没有参与过一个系统的项目案例,作为即将毕业的我们在求职的时候,需要具备一些项目案例的经验。其二,我们虽然在社会上工作一段时间,但是我们参与开发的项目比较少,导致沉淀的经验也比较少。其三,对新技术的研究和使用,等等上述的情况非常多。现在呢,结合生活的应用非常多的商城系统作为开发案例,作为开发者的我们也想自己开发一个简单的系统。从用户的角度来说,该系统要具备这样的功能,用户注册,用户登录,用户心,其用户心有分为,用户基本信息修改,用户收获地址维护,以及用户订单管理,包含可查阅订单详情以及我的购物车。从商城的角度来看,应该必备如下功能,商场首页,商品详情页面以及支持提交订单确认页面,产品列表页面,活动商品页面,菜单导航功能,关键字查询功能,常见问题,联系我们以及商品评价等功能。从后台的功能来看,应该具备如下功能,商城分类的维护,商城商品的维护,商品的评价维护,商品的订单管理,模拟发货过程。商城会员管理,以及会员级别维护管理,系统基础功能,包含员工,部门,角色,菜单,文章发布,系统日志,行政区域管理,代码生成工具等等。   通过了解完上述的一个开发需求,我们采用的技术方案是,数据库是Sql server 2016 ,开发平台是VS 2022 ,开发语言是微软的C#开发语言,当然在开发的过程,我们也会用到一些技术框架。比如。.NetCore3.1 ,EF,MVC,bootstrap,Html,css,js,div。 一定要注意:课程并不是每一个开发细节都讲到,主要是提供的源码,其源码核心的地方会讲到,比如怎么绑定数据到前端,怎么从数据库读取数据等。 共5个课时,课程资料在最后一个课程提供,两个周内更新完成

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧