2011-05-04 44 views
0

我想知道驗證一個視圖字段值在一個實體集中是唯一的最佳方法:在持久層更新之前或之後? 涉及的db字段具有唯一約束,並且其表被映射到EF模型。 我看到了獨特的價值確認兩種方式的EntitySet的:保存更改唯一值驗證:更新到持久層之前還是之後?

  1. 以前以分貝(模型更新過程中或通過定製DataAnnotations模型裝飾)
  2. 儲蓄變爲分貝(通過在存儲庫或控制器中處理由持久層生成的UpdateException)

使用第一種方法,我需要查詢db以檢查唯一性,所以任何視圖更新將需要數據庫選擇和數據庫更新。

對於第二種方法,不需要額外的選擇,但很難確定錯誤類型和違規字段。

我寧願方法2,但其用於確定是否插入/更新失敗的問題,由於唯一約束力量讓我選擇方法1.

或者有另一種方式?

回答

0

檢查唯一約束的首選和推薦方法是通過自定義DataAnnotation屬性的UI。用這種方法你必須編寫一些代碼,但這是所有網站爲檢查唯一性約束所做的。然而,asp.net mvc 3提供了RemoteAttribute開箱即用來檢查唯一性約束。我會建議使用第一種方法,因爲如果您已經以良好的方式組織它,一些微小的ajax調用不會對性能產生顯着影響。

+0

謝謝。我會參考方法1.儘管我在客戶端和服務器端都進行了驗證,但是我只會在服務器端運行唯一性檢查,而不使用JavaScript的Ajax調用。 – fabri 2011-05-04 14:48:11

相關問題