2011-05-30 48 views
1

我有一對多的關係,並希望檢查更新範圍中的業務規則。 例如,有以下情況: 第一個表包含組,第二個表包含學生。另外還有一條業務規則,在我們的系統中說:「一個團隊不能容納超過10名學生」。 我們需要檢查更新或事務範圍中的規則,因爲代碼中的預驗證不能保證規則的滿足。EF中的條件更新

是否有可能在沒有自定義腳本的情況下使用WHERE條件進行更新? 在EF中進行這種驗證的最佳方式是什麼?

回答

1

不,您不能將這樣的WHERE條件包含到EF中的UPDATE語句中。此外,這是典型的業務規則驗證,它在數據庫層中略微超出了範圍。你應該建立一個只允許單個客戶端修改組的機制。客戶端將加載一個組(=鎖定)更改學生人數並嘗試保存該組。由於該組僅由單個客戶端鎖定,因此沒有其他人可以修改內容,並且您可以在保存該組並釋放鎖之前自由檢查學生人數。創建這種鎖定機制的最簡單方法是添加列LockedBy和LockedDate。爲了避免無限制的鎖定,你可以有一些鎖定舊的情況,那麼X被認爲是過期的。

+0

that sucks.Locks吸吮,特別是在MVCC數據庫中。 – GorillaApe 2012-10-27 15:15:30