2012-07-23 59 views
0

這是一個RIA Services應用程序:RIA服務實體「自定義」鍵

我們有一個看起來實體A這樣的:

ID int (PK, identity) 
Code string 

Code由兩個字符的前綴AB,一第二個兩個字符前綴CD然後是一個四位數的整數。將實體添加到數據庫時,用戶應該輸入ABCD作爲代碼,並且應用程序應該將最小可能的整數附加到代碼中,但尚未在其他代碼中使用AB前綴。例如,如果該數據庫是這樣的:

ABCD0001 
ABCD0002 
ABEF0003 
CDEF0001 

和用戶輸入前綴ABGH,則代碼應該ABGH0004

將有多人同時使用這個應用程序,所以我不認爲任何Cient-Side是一個很好的選擇。有什麼想法嗎?

謝謝!

+0

這實際上是一個SQL問題,而不是RIA服務問題。 – 2012-07-24 04:33:44

+0

我強烈反對。我完全有能力使用觸發器在SQL中執行此操作。這對Ria來說並不是很好,所以我希望有一種方法可以通過DomainService層來實現,或者是一種用Ria實現觸發器的好方法。 – nosirrahcd 2012-07-24 14:00:34

回答

0

我認爲你最大的問題,如果你嘗試在RIA服務或客戶端內部做到這一點是併發用戶打破序列同時提交。

我的建議是使用DB觸發器來計算數據庫中的這個值,這意味着任何同時提交都會得到正確的計算代碼。

要使用新代碼刷新客戶端實體,因爲我不相信它會在提交後自動更新,您需要再次使用LoadBehavior.RefreshCurrent將實體加載到客戶端中,以強制它用保存的值更新屬性。

這很麻煩,但真的沒有一個好辦法做到這一點只有客戶端。