在C#事务作用域中事务中止
在谷歌搜索事务范围时,我看到了很多例子。但我试着这么做,所以在我的例子中,它抛出了异常。异常显示“事务中止”。。我看到了他们可能的解决方案,它显示关闭连接。但在这里,我在最后一个模块中关闭了它。有人能帮助我解决这个问题吗 更新 上述连接问题已解决。现在ti在db.ExecuteNonQuery(cmd)中抛出异常;根据我所知,在交易完成之前,本协议不会执行 麦可德在C#事务作用域中事务中止,c#,asp.net,transactionscope,C#,Asp.net,Transactionscope,在谷歌搜索事务范围时,我看到了很多例子。但我试着这么做,所以在我的例子中,它抛出了异常。异常显示“事务中止”。。我看到了他们可能的解决方案,它显示关闭连接。但在这里,我在最后一个模块中关闭了它。有人能帮助我解决这个问题吗 更新 上述连接问题已解决。现在ti在db.ExecuteNonQuery(cmd)中抛出异常;根据我所知,在交易完成之前,本协议不会执行 麦可德 public bool NewsType(int Id) { bool status = fals
public bool NewsType(int Id)
{
bool status = false;
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database db = factory.Create("NewsCon");
con.Open();
using (TransactionScope transactionScope = new TransactionScope())
{
try
{
String query = @"DELETE FROM NewsType WHERE ID =: ID";
cmd = db.GetSqlStringCommand(query);
db.AddInParameter(cmd, "ID", DbType.Int32, Id);
db.ExecuteNonQuery(cmd); //<-- Now it shows from the error here.But i think inside transaction scope this doesn't execute until transaction has completed.
//Second step goes here
status = true;
transactionScope.Complete();
transactionScope.Dispose();
}
catch (Exception ex)
{
throw;
}
finally
{
con.Close();
}
return status;
}
}
public bool新闻类型(int-Id)
{
布尔状态=假;
DatabaseProviderFactory=新的DatabaseProviderFactory();
数据库db=factory.Create(“NewsCon”);
con.Open();
使用(TransactionScope TransactionScope=new TransactionScope())
{
尝试
{
字符串查询=@“从新闻类型中删除,其中ID=:ID”;
cmd=db.GetSqlStringCommand(查询);
db.AddInParameter(cmd,“ID”,DbType.Int32,ID);
db.ExecuteNonQuery(cmd);//您似乎没有在任何地方使用con
。我可以想象您的数据库工厂正在创建自己的连接。另外,我猜您需要在启动事务之前打开一个连接。@Rob请参阅编辑的帖子。据我所知,在thrasaction完成之前,不会执行此操作。
-这是错误的。SQL肯定会立即执行。事务只是没有提交,因此更改不会显示给其他连接(取决于作用域)。您似乎没有在任何地方使用con
。我可以想象您的数据库工厂正在创建自己的连接。此外,我猜您需要在启动事务之前打开连接。@Rob请参阅编辑的帖子。据我所知,在thrasaction完成之前,不会执行此操作。
-这是错误的。tSQL肯定会立即执行。事务只是没有提交,所以更改不会显示给其他连接(取决于范围)。