2012-03-26 65 views
0

我的領域模型對象(由實體框架生成)對其進行驗證(使用屬性和IValidatableObject接口),通過評論人們似乎反對將驗證屬性置於領域模型中好友類)。.NET領域模型驗證和好友類

我使用專門的ViewModel類和它自己的驗證屬性來處理UI(ASP.NET MVC)中的客戶端驗證,因爲我的業務層暴露給其他客戶端UI,所以我仍然需要域模型的驗證屬性這是一個好方法嗎?

+0

似乎違反了DRY,因爲您在兩個不同的地方創建驗證以滿足框架需求。 – 2012-03-26 08:06:20

+0

謝謝,那麼最好的方法是什麼?請注意,我需要驗證域模型,因爲我有其他客戶端使用業務層。 – Socardo 2012-03-26 09:37:33

回答

0

是的,沒有。它是一個很好的方法,因爲你在服務器端進行驗證。您的域邏輯不應該假設客戶端驗證(客戶端當然應驗證)。但除此之外,我不會按屬性驗證域,因爲驗證規則是特定於上下文的;他們依賴於你正在執行的操作。我將驗證放在表示域的不同用例(寫操作)的方法中,例如「創建客戶」,「賬單客戶」,「取消訂單」等。不要假定所有驗證規則都是不變量。

我不明白如何在不將您的域實體暴露在服務邊界之外的情況下重用服務器和客戶端驗證,這種情況更糟糕。