2010-08-25 39 views
1

我有一個用nhiberate訪問數據庫的自定義屬性。該屬性實際上是從Castle的AbstractValidationAttribute繼承的,並用於根據正則表達式驗證屬性。問題是,這些正則表達式是CMS管理和存儲在數據庫中,並且當您更改數據庫中的值時,它們不反映在屬性中。基本上,該屬性只會初始化,然後從數據庫加載一次。有沒有辦法解決?訪問數據庫的C#自定義屬性

謝謝,羅賓

回答

0

在我的書,感覺有點奇怪有一個屬性執行數據庫操作。也就是說,每次調用GetCustomAttributes時都會實例化屬性對象,因此如果該屬性在構建過程中拾取數據,則應該在每次使用該方法檢查屬性時讀取數據。

+0

驗證必須轉到數據庫並不罕見。當您查看驗證應用程序塊時,它包含一個'CreateValidator'方法,該方法允許創建一個與數據庫進行通信的驗證器。這可以很好地分離問題,但功能性,效果是相同的。該屬性通過讀取數據庫來啓用驗證。 – Steven 2010-08-25 10:28:24

+0

@Steven:我不覺得奇怪的驗證依賴於數據庫,但是我發現從屬性類訪問數據庫確實有點奇怪。 – 2010-08-25 10:30:57

+0

有沒有更好的方法來解決這個問題? – robinbetts 2010-08-25 10:36:11

0

屬性一般不會做任何事情。他們是標記。其他代碼應該使用它們來根據屬性中使用的數據執行某些操作。