我正在尝试使用IfxCommand执行简单的选择查询。我想将隔离设置为脏读,但我只找到了在IfxTransaction的上下文中设置隔离级别的示例。我不需要事务,因为我只发出一个select语句。以下是我目前的代码,这是最好的方法吗?另外,如果您知道隔离级别设置为脏读的时间长,我想知道。
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);
}
答案 0 :(得分:0)
将
using (var noTransaction = new TransactionScope(TransactionScopeOption.Suppress)) {
// Use your connection here
}
工作?不确定Informix是否会参与环境事务?或者 - 如果要在嵌套事务中显式设置isolationlevel:
var txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.ReadUncommitted;
txOptions.Timeout.TotalSeconds * 2));
using (var noTransaction = new TransactionScope(TransactionScopeOption.RequiresNew, txOptions)) {
// Use your connection here
}
编辑:只需阅读提到Informix和TransactionScopes的评论。您必须更改代码以反映那里的解决方案。