2011-08-02 48 views
0

我在我的應用程序中有一個用戶實體,用戶在註冊到應用程序時輸入一些基本信息。如果他們想要使用一些高級功能,他們必須提供完整的信息。不同的模型驗證場景

所以,我有兩個驗證方案。

我的第一種方法是將Required屬性與MyRequired屬性進行交換,以避免通過實體框架在數據庫中將列創建爲NOT NULL。

但如果我把它添加到我的數據庫上下文中的模型進行了驗證。所以我不能添加實體,如果它只是充滿了基本信息。

有沒有辦法有一個實體與幾個不同的驗證場景

回答

3

有沒有什麼辦法來驗證不同情況下的模型?

這就是查看模型所應該做的。我建議您避免將您的EF模型傳遞給視圖。同時避免將EF域模型傳遞給您的操作=>始終使用視圖模型。這些類專門設計用於滿足給定視圖的要求,包括驗證屬性。然後將您的模型實體映射到您的視圖模型。

這樣你的域模型完全從信息被給定視圖中顯示的方式分離。另外(就像你的情況一樣),相同的領域模型可以在不同的視圖上有兩個不同的表示,當然也有不同的驗證需求=>視圖模型填補了這個空白。

+0

有沒有簡單的方法來視圖模型映射到一個實體,如果使用相同的prioperty-的名字呢? – Michael

+1

@Michael,是的,我個人使用[AutoMapper](http://automapper.codeplex.com/)。我在很多項目中使用它,它的表現也很棒。 –