如何在C#中实现多线程事务?

3
我希望能够并行地以事务方式运行一组不同表格的命令,您可以如何做到这一点?
更多细节:
我希望所有命令都分布在线程中,但在单个事务中执行,因此如果所有线程都成功,则提交,否则回滚。

这是什么类型的命令?与使用分布式事务相比,批处理操作通常会带来更多的好处。如果这些只是插入操作,最好只使用批量插入。 - Konstantin Spirin
我有不同的表格,我已经使用批量插入(SqlBulkCopy类)为每个表格执行了插入操作,但目前它们是串行执行的,因此我正在尝试并行执行它们并保持事务行为。 - Ahmed
3个回答

6

1

一个典型的数据库连接无法处理多线程使用,因此您不应该尝试这样做。

相反,您可以考虑使用DTC,它允许多个数据库连接在单个事务中协作。但是它会带来一些开销,因此您应该确定您真正获得了想要的多线程优势。


这意味着没有任何从 .Net 去做它的方式吗? - Ahmed
1
我并没有说那个,我的意思是你需要的不仅仅是一个数据库连接对象和多线程代码。 - Lasse V. Karlsen
Ahmed,这更多关于MSQL服务器支持的内容,而不是.NET - 使用ODBC驱动程序的任何语言都将是相同的。 - weismat

0
我想并行地以事务方式在不同的表上运行一组不同的命令,我该怎么做?
线程1:打开连接,开始事务,发出命令,提交事务。
线程2:打开连接,开始事务,发出命令,提交事务。

1
我希望将所有命令分布在线程上,但在单个事务中进行,要么全部执行,要么全部不执行。 - Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接