2013-05-11 38 views
1

我有一個帶有域和數據層(僅包含EF和遷移)的ASP.NET MVC項目。實體框架中的域邏輯屬性

現在,我必須驗證客戶的VATNumber字段與特定的公式,我懷疑在哪裏放置它。

我想使用控制器的ModelState來檢查字段是否有效,使用EF DataAnnotation ValidationAttribute,所以我不必在控制器的Saving方法中驗證它。但是我不得不將商業邏輯放在數據層中。

是否有某種替代ValidationAttribute,因此它可以被「注入」?或者我只是看着這個錯誤?

+0

[CustomValidationAttribute](http://stackoverflow.com/q/10165143/861716)就是你所追求的。 – 2013-05-12 09:27:03

+0

爲此,我可以創建一個ValidationAttribute並將其保留在數據層中。我的目的是不在數據層中定義它。 – jaimetotal 2013-05-12 17:26:18

+1

所以你應該爲此創建視圖模型 – 2013-05-12 20:14:45

回答

1

驗證屬性不是實體框架的一部分。 如果要從表示層分割數據層,可以使用Viewmodels並使用Automapper將它們綁定到數據模型上。在這種情況下,您將視圖模型的域驗證和數據模型上的數據層驗證。 在非常複雜的情況下,您可能有三種模型:viewmodel,domainmodel和datamodel,但在一般情況下,viewmodel和datamodel就足夠了。

+0

我們要修改我們維護數據層並創建ViewModel或者將域和數據層粘在一起。 – jaimetotal 2013-05-12 20:30:00