Проблема заключается в том, что вы запускаете транзакцию, выполняете вставку, а затем пытаетесь выполнить выбор с использованием другого соединения.
Поскольку это другое соединение, селектор не участвует в исходной транзакции. Это вызывает блокировку выбора из-за невыполненной транзакции.
Способ обойти это - включить ваш выбор в вашу транзакцию. Просто пропустите транзакцию:
private DataSetGetDetail (int TestID, DbTransaction dbTrans)
{
var TestSql = "Select * from
TestTable Where ID="+TestID;
var cmdTest = dbClass.GetSqlStringCommand(TestSql);
var dsTest= dbClass.ExecuteDataSet(cmd, dbTrans);
return dsTest;
}
Альтернативным подходом будет использование System.Transactions и использование TransactionScope . Если бы вы использовали такой подход, вам не пришлось бы передавать транзакции своим методам.
Или вы можете совершить транзакцию и затем выполнить выбор, если это соответствует вашим требованиям.