经验:使用.net 2.0中的TransactionScope碰到的问题
2008-04-14 13:21
447 查看
经验:使用.net 2.0中的TransactionScope碰到的问题
概述:不能在同一个TransactionScope中打开多个连接对象
TransactionScope真的是很方便的,具体的使用也很简单,MSDN上有详细描述。不过我在使用过程中发现了一个问题,那就是无法在同一个TransactionScope中打开多个连接对象。示例代码如下,示例中是连接到同一实例的同一数据库,但连接到不同实例的不同数据库也是同样的结果。
具体原因还需具体分析,我碰到的情况不一定代表就是正确的情况,还请大家批评。
[Test]
public void TestTransactionScope()
{
using (TransactionScope ts = new TransactionScope())
{
string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
SqlConnection cn1 = new SqlConnection(cnstr);
cn1.Open();
using (TransactionScope ts2 = new TransactionScope())
{
SqlConnection cn2 = new SqlConnection(cnstr);
cn2.Open();
}
}
}
[Test]
public void TestTransactionScopeA()
{
using (TransactionScope ts = new TransactionScope())
{
string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
SqlConnection cn1 = new SqlConnection(cnstr);
cn1.Open();
SqlConnection cn2 = new SqlConnection(cnstr);
cn2.Open();
}
}
以上测试都抛出了异常,并且运行时间很长,象死机一下
System.Transactions.TransactionManagerCommunicationException : 与基础事务管理器的通信失败。
----> System.Runtime.InteropServices.COMException : 对 COM 组件的调用返回了错误 HRESULT E_FAIL。
概述:不能在同一个TransactionScope中打开多个连接对象
TransactionScope真的是很方便的,具体的使用也很简单,MSDN上有详细描述。不过我在使用过程中发现了一个问题,那就是无法在同一个TransactionScope中打开多个连接对象。示例代码如下,示例中是连接到同一实例的同一数据库,但连接到不同实例的不同数据库也是同样的结果。
具体原因还需具体分析,我碰到的情况不一定代表就是正确的情况,还请大家批评。
[Test]
public void TestTransactionScope()
{
using (TransactionScope ts = new TransactionScope())
{
string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
SqlConnection cn1 = new SqlConnection(cnstr);
cn1.Open();
using (TransactionScope ts2 = new TransactionScope())
{
SqlConnection cn2 = new SqlConnection(cnstr);
cn2.Open();
}
}
}
[Test]
public void TestTransactionScopeA()
{
using (TransactionScope ts = new TransactionScope())
{
string cnstr = @"Data Source=cs1\sqlexpress;Database=fugao_dev;User ID=sa;Password=123;";
SqlConnection cn1 = new SqlConnection(cnstr);
cn1.Open();
SqlConnection cn2 = new SqlConnection(cnstr);
cn2.Open();
}
}
以上测试都抛出了异常,并且运行时间很长,象死机一下
System.Transactions.TransactionManagerCommunicationException : 与基础事务管理器的通信失败。
----> System.Runtime.InteropServices.COMException : 对 COM 组件的调用返回了错误 HRESULT E_FAIL。
相关文章推荐
- [导入]经验:使用.net 2.0中的TransactionScope碰到的问题
- 将使用AJAX的DNN模块部署到.net 2.0站点上的问题
- JfreeChart使用经验总结(分析了使用中碰到的一些常见问题)
- JfreeChart使用经验总结(分析了使用中碰到的一些常见问题)
- 使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)
- 使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)
- 将使用AJAX的DNN模块部署到.net 2.0站点上的问题
- 在.NET中发送邮件,使用回执功能中遇到问题的解决方法[在NOTES服务器上,C#,.NET2.0环境]
- vue使用vue-ueditor碰到的问题(Couldn't find preset "es2015" relative to directory)
- Battery Historian2.0使用过程中遇到的一些问题
- 使用IEPNGFix 2.0解决IE6支持PNG透明问题
- 新手使用QT开发常会碰到的问题
- mininet中使用dpctl碰到的参数数量问题
- 【.Net码农】使用ashx解决ajax跨域访问的问题
- 使用cardview和recycleview时碰到的一些问题
- JSF 2.0碰到一个比较纠结的问题——上传文件
- .net 中异步SOCKET发送数据时碰到的内存问题 (二)
- 个人项目Fragment使用经验及遇到的问题
- 使用CMAKE过程中碰到的栈溢出问题总结
- .NET中访问Oracle数据库链接:ORA-02041: client database did not begin a transaction 问题的处理。