由于我有一个“DB util”类,DataSet QueryDB(string spName, DBInputParams inputParams)
其中包含用于所有对数据库的调用的方法,因此我想重用此方法以支持事务调用。
所以,最后我将在 SqlTransaction 中有一个 SqlDataAdapter.Fill。这会是一个坏习惯吗?因为我很少在事务中看到 DataAdapter.Fill 的用法,更常见的是 ExecuteReader()。有什么问题吗?
Edit1:问题是在我的事务中经常需要检索一些数据(例如自动ID)......这就是为什么我想将它作为DataSet 获取。
Edit2:奇怪的是,当我在来自 2 个不同进程的 for 循环(10000)中使用这种方法时,我得到“事务(进程 ID 55)与另一个进程在锁定资源上死锁,并被选为死锁受害者。重新运行事务。” . 这是正确的行为吗?
Edit3:(Edit2 的答案)我使用IDENT_CURRENT('XTable')
的是错误的来源。我回去后SCOPE_IDENTITY()
,一切都解决了。