gpt4 book ai didi

c# - 根据不同操作结果的数量使用带有 sqlTransaction 的构造

转载 作者:行者123 更新时间:2023-11-30 17:22:46 26 4
gpt4 key购买 nike

我很好奇以下代码是否被认为是安全的?

using (SqlConnection cn = new SqlClient.SqlConnection(connectionString))
{
cn.Open();
using (SqlTransaction tr = cn.BeginTransaction())
{
try
{

if (!Data.DoSomething1(tr, p1, p2))
{
tr.Rollback();
return false;
}

foreach (ItemType item in Items)
{
if (!Data.DoSomething2(tr, p3, p4))
{
tr.Rollback();
return false;
}
}

tr.Commit();
return true;
}
catch (Exception myErr)
{
if (tr != null)
tr.Rollback();

throw myErr;
}
finally
{
if (cn != null)
{
cn.Close();
cn.Dispose();
}
}
}
}

我想通过 ref 传递事务“tr”,但不能,因为它在“使用”结构中。我想听听有关在类似情况下采取更好方法的建议。

问候

最佳答案

您不需要通过引用传递交易。它是一个引用类型,所以当你将它传递给一个函数时,你已经提供了一个引用。你做的很好。

尽管您的代码还有一些其他内容与您的问题没有直接关系:

  • 你真的应该使用 throw; 而不是 throw myErr;
  • 如果您已经在 using 语句中拥有资源,则无需显式释放资源。这就是 using 的用途。

关于c# - 根据不同操作结果的数量使用带有 sqlTransaction 的构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603508/

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