对多个方法 C# 使用单个事务?
Posted
技术标签:
【中文标题】对多个方法 C# 使用单个事务?【英文标题】:Using a single transaction for multiple method C#? 【发布时间】:2016-06-23 08:49:17 【问题描述】:假设我有一个插入按钮,其中有多个方法,它们在数据库中读取、插入和更新等。是否可以对所有这些调用的方法使用单个事务? 点赞:
private void method_A()/* doing tons of db stuff.. */
private void method_B()/*..*/
private void method_C()/*..*/
protected void Insert_OnClick(object sender, EventArgs e)
//begin transaction
Method_A();
Method_B();
Method_C();
//end transaction
这种方式可行吗?以前从未使用过事务。 顺便说一句,如果这很重要,请使用 MS Access db。
【问题讨论】:
你见过this吗? @PaulF 它没有显示如何通过 C# 实现事务,或者如果我简单地添加BEGIN TRANSACTION
.. C# 代码和方法.. COMMIT [TRANSACTION | WORK]
ROLLBACK [TRANSACTION | WORK]
会起作用吗?跨度>
【参考方案1】:
using (OleDbConnection connection =
new OleDbConnection(connectionString))
OleDbCommand command = new OleDbCommand();
OleDbTransaction transaction = null;
// Set the Connection to the new OleDbConnection.
command.Connection = connection;
// Open the connection and execute the transaction.
try
connection.Open();
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction.
command.Connection = connection;
command.Transaction = transaction;
Method1(command.connection);
Method2(command.connection);
类似的东西?
所以你使用一个连接,然后设置事务级别并运行你的方法。
查看这里了解更多信息:https://msdn.microsoft.com/en-us/library/93ehy0z8(v=vs.110).aspx
【讨论】:
Method1();
和 Method2();
现在会在事务中还是我必须在参数中传递任何内容?
@Nyprez 我相信你必须通过连接。但我认为交易应该保留
@Andrew Kilburn 是 command
还是 connection
我应该传递给 Method1();
和 Method2();
?
@您需要传递连接,但如果您想一次执行所有命令,您可以通过将命令变量传递到您的方法中并返回它。
@Nyprez 进展如何?以上是关于对多个方法 C# 使用单个事务?的主要内容,如果未能解决你的问题,请参考以下文章