分離レベルを指定できるように、トランザクション内で実行する読み取りクエリがあります。クエリが完了したら、どうすればよいですか?
- トランザクションをコミットします
- トランザクションをロールバックする
- 何もしない(トランザクションがusingブロックの最後でロールバックされる原因になります)
それぞれを行うことの意味は何ですか?
using (IDbConnection connection = ConnectionFactory.CreateConnection())
{
using (IDbTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))
{
using (IDbCommand command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandText = "SELECT * FROM SomeTable";
using (IDataReader reader = command.ExecuteReader())
{
// Read the results
}
}
// To commit, or not to commit?
}
}
編集:問題は、トランザクションを使用する必要があるかどうか、またはトランザクションレベルを設定する他の方法があるかどうかではありません。問題は、何も変更しないトランザクションがコミットまたはロールバックされるという違いがあるかどうかです。パフォーマンスに違いはありますか?他の接続に影響しますか?他に違いはありますか?