【发布时间】:2016-03-02 09:12:34
【问题描述】:
第一个疑问:- 我们是否需要为 Select sql 语句创建 TranscationScope? 从我的 ASP.NET MVC 应用程序中,我尝试使用 TranscationalScope 将内容插入到一个表中。我在调用 ExecuteNonQuery() 之前在代码中设置了一个断点,并打开了一个 SQL Server Management Studio,并从表中执行了一个 select*;查询,但它没有等待并立即执行。 理想情况下,TranscationScope 曾经在桌子上加了锁,但我没有看到。
此外,我编写了一个控制台应用程序(而不是使用 SQL Server Management Studio)并使用 TranscationScope 执行了相同的选择查询,但它也立即执行而无需任何等待,并且我的断点在我的 ASP.NET Web 应用程序中仍然处于活动状态.
以下是我在 ASP.NET 应用程序中编写的代码。
public void UpdateBranchDetails()
{
try
{
using (TransactionScope ts = new TransactionScope())
{
SqlCommand cmd = new SqlCommand(@"UPDATE BranchDetails
SET
[Reviews] = " + Reviews.ToString() + @"
,[Overall_Satisfaction] = " + Overall_Satisfaction.ToString() + @"
,[Goods_Condition_At_Delivery] = " + Goods_Condition_At_Delivery.ToString() + @"
,[Staff_Behaviour] = " + Staff_Behaviour.ToString() + @"
,[Timeliness] = " + Timeliness.ToString() + @"
,[Packaging_And_Loading_Professionalism] = " + Packaging_And_Loading_Professionalism.ToString() + @"
,[Likelihood_To_Recommned] = " + Likelihood_To_Recommned.ToString() + @"
WHERE BranchID = " + BranchID.ToString(), sqlConn);
sqlConn.Open();
cmd.ExecuteNonQuery();
ts.Complete();
}
}
catch (Exception ex)
{
}
finally
{
sqlConn.Close();
}
}
上述代码中的sqlConn,是SqlConneciton类的对象,被声明为类成员。
【问题讨论】:
-
TransactionScope 不会直接在表上创建锁,它会创建一个事务(如果需要并且没有环境)。不确定您要达到的目标。
标签: c# sql asp.net asp.net-mvc-4 sql-server-2012