62,267
社区成员
发帖
与我相关
我的任务
分享
string connectionString1 = "server=localhost;database=test;user id=test;password=test;enlist=true";
string connectionString2 = "User Id=scott; Password=tiger; Data Source=Apollo;enlist=true";
//string connectionString3 = "User Id=scott; Password=tiger; Data Source=Apollo;enlist=true";
// 这个 scope 下, 即使使用相同的连接字符, 创建多个连接, 事务还是会被 promote 的
using (TransactionScope tx = new TransactionScope())
{
DbProviderFactory fac = DbProviderFactories.GetFactory("Npgsql");
//DbProviderFactory fac = DbProviderFactories.GetFactory("System.Data.OracleClient");
using (DbConnection connection1 = fac.CreateConnection())
{
connection1.ConnectionString = connectionString1;
connection1.Open();
using (DbCommand command1 = connection1.CreateCommand())
{
command1.CommandText = "insert into dept (deptno) values (50)";
command1.ExecuteNonQuery();
}
//DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
using (DbConnection connection2 = factory.CreateConnection())
{
connection2.ConnectionString = connectionString2;
connection2.Open();
using (DbCommand command2 = connection2.CreateCommand())
{
command2.CommandText = "insert into tablea (colb) values ('c')";
command2.ExecuteNonQuery();
}
}
}
tx.Complete();
}