netcore 中 使用 TransactionScope

qq_31381279 qq_31381279 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在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))
{
//多表数据操作
}
}
...全文

相关推荐

C#中TransactionScope的使用小结

TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事务。使用之前必须添加对 System.Transactions.dll 的引用。 下列代码就是一个正在创建的事务,这个事务自身还封装了多个数据库查询。只要任意一个 SqlCommand 对象引发异常,程序流控制就会跳出 TransactionScope 的 using 语句块,随后,TransactionScope 将自行释放并回滚该事务。由于这段代码使用了 using 语句,所以 SqlConnection 对

weixin_38663167

.NET中 关于脏读 不可重复读与幻读的代码示例

并发可能产生的三种问题 脏读 定义:A事务执行过程中B事务读取了A事务的修改,但是A事务并没有结束(提交),A事务后来可能成功也可能失败。 比喻:A修改了源代码并且并没有提交到源代码系统,A直接通过QQ将代码发给了B,A后来取消了修改。 代码示例 代码如下:[TestMethod]         public void 脏读_测试()         {             //前置条件             using (var context = new TestEntities())             {                 Assert.AreEqual(1,

weixin_38557670

弱电网下光伏并网逆变器序阻抗建模仿真复现扫频法【序阻抗判断稳定性】

内容概要:本文聚焦于弱电网条件下光伏并网逆变器的序阻抗建模与稳定性分析,系统阐述了基于扫频法的阻抗特性仿真与复现方法。通过构建正负序阻抗模型,深入剖析逆变器在弱电网环境中的动态响应特性,结合锁相环、电流环等关键控制环节对系统阻抗的影响机制,采用序阻抗稳定性判据评估多机并网或复杂电网条件下的系统稳定裕度。研究在Simulink平台中实现激励信号注入、频率响应采集与阻抗曲线绘制,为高比例新能源接入背景下并网系统的稳定性分析提供了可靠的仿真手段与理论支撑,尤其适用于SCI级别论文成果的复现与拓展验证。; 适合人群:电力电子、新能源并网技术及相关领域的硕士/博士研究生、科研人员,以及从事光伏逆变器、微电网稳定控制开发的工程技术人员。; 使用场景及目标:①掌握扫频法在电力电子装置阻抗建模中的具体实施流程;②理解并应用基于序阻抗的稳定性判据进行系统稳定边界分析;③用于高水平学术论文(如SCI期刊)中阻抗建模与稳定性分析部分的仿真复现与方法验证; 阅读建议:建议读者结合文中所述方法与提供的参考文献,自主搭建Simulink仿真模型,逐步完成扰动信号设计、数据采集、傅里叶分析及阻抗拟合全过程,深入探究控制参数变化对系统阻抗特性和稳定性的具体影响,强化理论与实践的融合能力。

欢多天天写代码

三相并网逆变器虚拟阻抗+统一有源阻尼策略SVPWM+SPWM调制仿真

内容概要:本文档系统性地介绍了三相并网逆变器的核心控制技术及其在复杂电网环境下的仿真应用,重点涵盖虚拟阻抗与统一有源阻尼策略在SVPWM和SPWM调制方式下的实现方法,旨在提升逆变器的稳定性与电能质量。内容包括无功功率扰动孤岛检测、中点电位平衡控制、低电压穿越(LVRT)、模型预测控制(MPC)、正负序分离、电网前馈控制等关键技术,并扩展至风储联合调频、微电网下垂控制、虚拟同步发电机(VSG)、构网型逆变器等多种典型电力系统应用场景。所有技术均配有基于Simulink/Matlab平台的完整仿真模型、参考文献及说明文档,强调理论分析与仿真实践的深度融合,突出科研中“借力”与创新思维的重要性。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子与可再生能源系统开发的工程师;具备MATLAB/Simulink仿真基础和电力系统专业知识的技术人员。; 使用场景及目标:①开展三相并网逆变器控制策略的研究与优化设计;②复现高水平学术论文中的控制算法;③完成毕业课题、科研项目或工程仿真验证;④掌握虚拟阻抗、有源阻尼、SVPWM/SPWM调制、MPC、VSG等核心技术的建模与实现方法;⑤支撑微电网、构网型变流器等前沿方向的科研攻关。; 阅读建议:建议按照资源目录结构化学习,优先选择与自身研究方向契合的内容模块,结合提供的仿真模型、参考文献和说明材料进行实操演练,注重从理论推导到仿真实现的全过程理解,充分利用共享网盘资源深化技术掌握,提升科研效率与创新能力。

欢多天天写代码

chromedriver-win32-159.0.8133.0(Canary).zip

chromedriver-win32-159.0.8133.0(Canary).zip

LCG元
评论 2
收藏 已收藏
分享
返回顶部
qq_31381279
.NET技术前瞻 13,343 成员 5,385 内容