我使用linq-sql,这就是我需要的。
Sub Commit()
Try
StepStart:
Transaction Scope Serialized
Begin Transaction
Check BusinessRule1
Check BusinesRule2
if BusinessRulesFailed
{ Transaction.Rollback }
else {
Query = db.out
db.SubmitChanges()
Transaction.Commit()
}
Catch DeadLockException
Goto StepStart
End Try
End Sub
可以按照这种方法吗?有人可以用C#或VB.Net给我一个例子
答案 0 :(得分:0)
是的,可以使用这种方法。我们做类似的事情。我有一点延迟,比如500毫秒。
使用SQL Server(和Sybase)锁定策略将始终发生死锁:您只能减少as per MSDN (for 2000 bit still valid)的可能性。也说重试。
我也看到过重试的商业应用。
另一种选择是启用snapshot isolation,但这不是完美的