TransactionScope锁表的问题

celery94 2008-03-06 07:53:30
在使用TransactionScope的时候,
如果在该事务里面存在多个数据库操作,比方说:

try
{
using (TransactionScope scope = new TransactionScope())
{
SQLHelper.ExecuteNonQuery(insertstr);//第一个表操作,比如是是一个insert操作(数据库1)

SQLHelper.ExecuteNonQuery(selectstr);//第一个表操作,比如是是一个select操作(数据库1)

SQLHelper.ExecuteNonQuery(updatestr);//第一个表操作,比如是是一个update操作(数据库2)
scope.Complete();
}
}
catch
{
//msg
}


这是针对多个数据的操作,希望能够在事务开始的时候将数据库锁定,其他操作都不能执行。

记得好像是用SqlTransaction是这样的,在此期间是不能做其他操作的。

但是这个是两个数据库,使用不用的SqlConnection。
想请问有没有什么锁定表的方法。
...全文
327 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝熊 2010-03-17
  • 打赏
  • 举报
回复
学习中。。。。。
九章落地 2008-03-13
  • 打赏
  • 举报
回复
没实际弄过.
因为事务涉及到两个库,用不了SqlTransaction,你需要引用:System.EnterpriseService
它里面有方法实现分布式事务.

你也可以网上搜一下"分布式事务"
celery94 2008-03-12
  • 打赏
  • 举报
回复
主要是连接了两个数据库,需要对两个数据库都进行操作。
不管是什么地方出错了,需要将两个数据都进行回滚。
如果能直接用SQLTransaction那是最方便的。
稍微有点无敌 2008-03-12
  • 打赏
  • 举报
回复
还是用SQL Server的内部事务处理来得安全,方便些
稍微有点无敌 2008-03-12
  • 打赏
  • 举报
回复
TransactionScope应该是没有锁定了数据库哦
celery94 2008-03-12
  • 打赏
  • 举报
回复
UP
celery94 2008-03-06
  • 打赏
  • 举报
回复
那TransactionScope是不是已经锁了数据了呢?
ojekleen 2008-03-06
  • 打赏
  • 举报
回复
为什么要锁定表,锁定相应的数据行就行了啊
shinaterry 2008-03-06
  • 打赏
  • 举报
回复
mark

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧