2016-07-14 35 views
0

當多個用戶訪問應用程序時,應用程序不應允許插入重複的列(例如:名稱列在用戶表中,其中名稱是唯一的)。如何防止插入沒有兩行的行將具有相同(重複)值

我如何做到這一點是,在按鈕單擊事件我檢查名稱是否存在數據庫。這顯示驗證錯誤,如果它存在(重複);這對單個用戶訪問應用程序時完美。

但是,當2個用戶同時插入一個具有相同列名的行(用戶)時,它允許插入具有相同名稱的記錄,因爲當第一個用戶的請求命中db以檢查該名稱是否已經存在時,記錄(具有重複名稱)尚未插入。

因此,沒有驗證顯示。

如何在nhibernate會話中解決這個問題?我可以使用鎖定嗎? 請指教。

回答

1

您應該對數據庫執行一個唯一的約束。然後,當提交插入事務時,您應該捕獲違反約束的錯誤。這是數據庫擅長的事情之一。