我有一個表(SQL Server)的,如:增量記錄位置的數據庫(LINQ通過或TSQL)
UserId CompanyId UserName Position
1 1 John 1
2 2 Adam 1
3 2 Nick 2
4 1 Mark 2
5 3 Jack 1
userid是自動增量的PK。 CompanyID是FK。職位只是用戶(每家公司)的連續計數器。
當爲公司插入新的用戶記錄(通過LINQ)時,我希望位置也增加。目前,我獲得給定CompanyId的頭寸的MAX + 1,然後將其分配給新記錄。問題是併發插入操作通常會導致相同的位置值。
我試着增加插入觸發器中唯一性的位置,但是LINQ並沒有自動反映更新的值。
我該如何解決這個問題,通過LINQ到SQL或直接作爲TSQL查詢?
任何幫助表示讚賞。謝謝!
你有沒有試過在設置位置時使用數據庫事務獲得獨佔鎖? – 2012-04-12 07:13:59
@ShoaibShaikh我試圖避免鎖定表,但我會看看它在交易中包裝。 – Nick 2012-04-12 07:20:13
如果將[IsDbGenerated設置爲true](http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute.isdbgenerated%28v=vs.90),則可以返回以觸發解決方案%29.aspx)和[AutoSync to OnInsert](http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute.autosync%28v=vs.90%29.aspx) – 2012-04-12 08:39:57