我一直在尝试为oracle复制SQLConnection.BeginTransaction(String TransactionName)。有一个类OracleConnection.BeginTransaction,但是我无法找到方法的重载来指定需要使用的事务的名称。任何有关这方面的帮助将不胜感激。
先谢谢
答案 0 :(得分:1)
我认为您可能需要在开始事务之前使用NAME参数执行SET TRANSACTION SQL语句。
答案 1 :(得分:0)
您可以从DbConnection类继承并创建自己的BeginTransaction()方法的重载。然后你必须继承DbTransaction类来创建自己的Commit()和Rollback()方法的重载。然后将它与DbProviderFactory和DbCommand对象一起使用。
答案 2 :(得分:-1)
您可以将事务与Command对象关联。当该命令被执行时,连接将在该事务的上下文中运行。
还有一个事务对象的Connection属性,您可以使用它来指定与事务关联的连接。
请参阅MSDN中的此示例:
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = connection.CreateCommand();
OracleTransaction transaction;
// Start a local transaction
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
command.Transaction = transaction;
try
{
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
command.ExecuteNonQuery();
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
}
答案 3 :(得分:-1)
对象OracleTransaction没有任何返回“name”的字符串成员。 我认为这是要面对的主要问题。
OracleConnection.BeginTransaction()返回一个OracleTransaction对象,因此我无法确定它应该如何为事务指定名称。
我希望它有所帮助。