I'm trying to execute a simple select query using IfxCommand. I would like to set isolation to dirty read, but I have only found examples of setting isolation level in the context of an IfxTransaction. I do not require a transaction as I am only issuing a select statement. Below is my current code, is this the best approach? Also, if y开发者_JAVA百科ou know how long the isolation level stays set to dirty read I would like to know.
DataSet ds = new DataSet();
IfxConnection connection = new IfxConnection(ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString);
IfxCommand command = new IfxCommand();
try
{
connection.Open();
command.Connection = connection;
command.CommandText = "SET ISOLATION TO DIRTY READ";
command.ExecuteNonQuery();
command.CommandText = BuildCommandString();
IfxDataAdapter idap = new IfxDataAdapter(command.CommandText, connection);
idap.Fill(ds);
}
Would
using (var noTransaction = new TransactionScope(TransactionScopeOption.Suppress)) {
// Use your connection here
}
work? Not sure if Informix enlists itself in ambient transactions? Or - if you want to set the isolationlevel explicitly in a nested transaction:
var txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.ReadUncommitted;
txOptions.Timeout.TotalSeconds * 2));
using (var noTransaction = new TransactionScope(TransactionScopeOption.RequiresNew, txOptions)) {
// Use your connection here
}
Edit: Just read the comment that refered to Informix and TransactionScopes. You'd have to change the code to reflect the solution there.
精彩评论