gpt4 book ai didi

c# - 在 C# 循环中调用 SQL 存储过程时处理事务

转载 作者:行者123 更新时间:2023-11-30 16:01:04 25 4
gpt4 key购买 nike

我正在开发一个已经由其他一些开发人员开发的系统。在该系统中,他们调用了一个存储过程,该过程用于在 C# 中的循环中插入记录,而无需使用用户定义的表类型。

而我需要做的是在这个场景中添加一个事务。但问题是我不知道在哪里进行交易。

我想知道它是在 C# 代码中预热循环还是在存储过程中。

最佳答案

您只能在 C# 循环中使用它。在过程中启动的事务必须在过程退出之前提交。 SQL Server 检查 @@TRANCOUNT在运行过程之前和之后,如果结果不匹配,则会引发异常。因此,过程不可能启动必须由调用者提交的事务。

最简单的想法是将您的 C# 代码包装在事务范围内:

using(var scope =  new TransactionScope(
TransactionScopeOption.Required,
new TransactionOptions() {
IsolationLevel = IsolationLevel.ReadCommitted
})) {
// Do the work here
scope.Complete();
}

请注意,传递 IsolationLevel = IsolationLevel.ReadCommittedcritical .

关于c# - 在 C# 循环中调用 SQL 存储过程时处理事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com