.net framework与java,分布式事务:.NET Framework与.NET Core
我有以下代码示例:
static void Main(string[] args)
{
TransactionManager.DistributedTransactionStarted += (sender, eventArgs) =>
{
Console.WriteLine("Promoted to distributed transaction!");
};
const string connectionString = @"Server=localhost\SQLEXPRESS;Database=master;Integrated Security=true;";
using (var tx = new TransactionScope())
using (var conn1 = new SqlConnection(connectionString))
using (var conn2 = new SqlConnection(connectionString))
{
conn1.Open();
Console.WriteLine("conn1 opened");
conn2.Open();
Console.WriteLine("conn2 opened");
tx.Complete();
}
Console.ReadLine();
}
在.NET Framework(4.8)控制台应用程序(针对SQL Server Express 2017)中执行此代码时,将产生以下输出:
由于该事务已被提升为分布式事务,所以我期望以.NET Core(3.0)为目标的类似控制台应用程序会抛出一个]
System.PlatformNotSupportedException(此平台不支持分布式事务。)。
但是,实际输出是:
为什么?我希望将事务提升为分布式事务与框架无关。
编辑:此.NET Core(3.0)代码示例对数据库连接有作用:
数据库架构:
CREATE DATABASE [TestDB1]
GO
CREATE TABLE [TestDB1].[dbo].[Table]([Value] [nvarchar](max) NULL)
。NET Core(3.0)控制台应用程序:
static void Main(string[] args)
{
TransactionManager.DistributedTransactionStarted += (sender, eventArgs) =>
{
Console.WriteLine("Promoted to distributed transaction!");
};
const string connectionString = @"Server=localhost\SQLEXPRESS;Database=TestDB1;Integrated Security=true;";
using (var tx = new TransactionScope())
using (var conn1 = new SqlConnection(connectionString))
using (var conn2 = new SqlConnection(connectionString))
{
conn1.Open();
Console.WriteLine("conn1 opened");
using (var cmd1 = conn1.CreateCommand())
{
cmd1.CommandText = "INSERT INTO [dbo].[Table] ([Value]) VALUES ('test 1')";
cmd1.ExecuteNonQuery();
Console.WriteLine("Record inserted through conn1");
}
conn2.Open();
Console.WriteLine("conn2 opened");
using (var cmd2 = conn2.CreateCommand())
{
cmd2.CommandText = "INSERT INTO [dbo].[Table] ([Value]) VALUES ('test 1')";
cmd2.ExecuteNonQuery();
Console.WriteLine("Record inserted through conn2");
}
tx.Complete();
Console.WriteLine("Transaction completed");
}
Console.ReadLine();
}
和控制台输出:
注意:对于2个连接使用2个different连接字符串,此示例也会成功!
0
投票
NET Core 不]支持分布式事务,因为在每个平台上都需要不同的事务管理器。您可以在https://github.com/dotnet/runtime/issues/715上找到有关此问题的更多信息。
[此功能似乎已在2020年11月30日之前从.NET发行版5.0中添加]
还有另一个线程SA在谈论这个问题。
.net framework与java,分布式事务:.NET Framework与.NET Core相关推荐
- JAVA分布式事务原理及应用(转)
JAVA分布式事务原理及应用(转) 引言 JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持 ...
- java分布式事务原理_JAVA分布式事务原理及应用
JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目的是要 ...
- java 分布式事务_Java核心知识 Spring原理十五 JPA 原理
1. 事务 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolation ) 和持久性 ( Dur ...
- java分布式事务——seata,tcc解决方案总结!
目录 1.分布式事务基础理论 1.1.CAP理论 1.2.BASE理论 2.分布式事务解决方案之2PC(两阶段提交) 2.2.1 XA方案 2.2.2 Seata方案 2.2.3分布式事务解决方案之T ...
- java分布式事务——最终一致性,最大努力通知总结!
目录 源码地址:https://github.com/kaixuanzhang123/dtx.git 4.分布式事务解决方案之可靠消息最终一致性 4.1.什么是可靠消息最终一致性事务 4.2.解决方案 ...
- java 分布式事务总结
编程式事务 TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition( ...
- Java 分布式事务规范 JTA 从入门到精通
前言 最近回顾 Spring 事务相关的设计与实现,发现 Spring 事务设计的最初目的是为了统一 Java 中 JDBC.JTA 与 JPA 事务的使用方式,并且其实现参考了 JTA 规范.大多数 ...
- java jta事务_JTA -- Java分布式事务管理
(参考并转载自http://blog.donews.com/Ralph/archive/2004/11/18/174646.aspx) 关于分布式事务,我觉得有必要了解清楚以下几点: (1)目前流行的 ...
- Java分布式事务实现Atomikos
先了解X/Open DTP(Distributed Transaction Processing)模型 X/Open DTP模型与XA规范 X/Open,即现在的open group,是一个独立的组织 ...
最新文章
- HarmonyOS之系统设置项的查询和使用
- 色彩的狂欢:看嘎玛·多吉次仁的画展
- Map 集合循环、遍历的 四 种方式
- 工具用途_小工具大用途:万能扳手、开瓶器、开箱器,DIY16种用法,玩过吗
- DNS劫持DNSmasq详细解析及详细配置
- Qt学习之路(10): Meta-Object系统
- 新手该学习Python2.x版本还是3.x版本
- FPGA智能传感系统(二)基于FPGA的交通灯设计
- PostgreSQL在何处处理 sql查询之六十三
- hadoop中HDFS命令遇到的问题
- netperf使用笔记
- OA网站不能正常显示(不能看正文)
- 基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布
- 某跳动面试官:说说微信扫码登录背后的实现原理?
- 微信小程序 体验版开启调试模式
- 周末阅读:北漂程序员边城的幸福生活
- CF869C The Intriguing Obsession 题解
- oracle修改用户system密码忘记,Oracle System密码忘记 密码修改、删除账号锁定lock (转) - mano...
- 如何设置路由器并利用路由器+宽带猫实现单机或是多机共享自动拨号上网
- matlab的多变量dmc源程序,基于MATLAB多变量DMC算法的仿真技术研究
热门文章
- python爬取股票大单历史记录_利用bs4爬取股票的历史交易数据
- 虚拟机vmnet8每次都要先禁用再启用_【零成本 amp; 超详细】使用Win10自带的Hyper-V管理工具搭建虚拟机...
- 嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究
- 虚拟主机搭建微信公众号服务器,建web服务器同时如何搭建虚拟主机?方法有几种?...
- cpucores_CPUCores怎么用 CPUCores使用方法指南_3DM单机
- flash背景透明、置底、禁止放大 右键菜单
- C语言单片机中延时程序的实现
- 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法...
- 各浏览器CSS兼容问题
- 在CentOS 6.5下搭建Nagios