2011-04-09 31 views
1

我正在開發使用ASP.Net MVC 3,我將使用NHibernate的數據訪問的數據驅動的Web應用程序,但我的問題是語言無關的(適用於具有異常概念所有語言)。什麼是將數據完整性驗證錯誤傳播給用戶的好方法/標準方法?

我得出的結論是,我更好地執行我的數據完整性規則無論是在實際的數據庫和存儲庫實現檢索上述數據,安全性和邊緣的情況下提供誠信機制不夠靈活。

問題

我想我也許應該說封裝我IRepository實現內部驗證。使用例如一個自定義MVC驗證屬性查詢數據庫進行驗證坐在我心中不自然;這樣的處理似乎更好地留在別的地方。

如果我執行我在IRepository實現驗證,我應該怎麼它傳播到調用上下文?

我看到幾個選項:

  • 子類Exception喜歡的東西ValidationException(或者如果它已經存在)。提供USER FRIENDLY消息作爲Message屬性。

上述操作很容易實現,但它假設調用上下文想要向用戶顯示文本。它也使得調用上下文很難提供本地化(我認爲在例外情況下我沒有任何地方 - 我不喜歡在Google搜索之前嘗試翻譯!)。

  • 與上述相同,但不是文本消息提供ValidationException<ValidationEnum>,其中ValidationEnum是描述錯誤的物體模型的枚舉。

這使得調用上下文充分的自由解釋的錯誤。我傾向於這種方法,儘管它會用大量的枚舉值污染代碼。

是否有更漂亮的任何其他選項比這些?

回答

1

根據各自的體系,實現您的域名類型IDataErrorInfo可能是一種選擇;這允許您在對象和對象+成員級別都指示失敗,並且IIRC現在也由MVC自動處理(許多其他框架,例如winforms等已經支持這個很長時間了)。

相關問題