2013-06-23 97 views
1

我正在實施一個使用mvc 4和實體框架的項目。數據首先驗證的驗證

其中我使用了數據優先的方法。我正在爲我的模型實現各種業務邏輯的部分類。

我的問題是我如何設置我的屬性驗證規則。如下所示。

[Required] 
public string FirstName { get; set; } 

如果我在屬性(實體框架生成模型)上手動添加此代碼「[必需]」。 然後如果我需要更改數據庫更改模型。那麼我所有的驗證規則都沒有了

我怎麼能過來這個問題,而不使用代碼的第一種方法。

回答

2

正如你發現你不應該編輯生成的文件,因爲當你重新生成它們時,更改會丟失。

比使用實體作爲視圖模型更好的體系結構是在視圖和實體之間插入單獨的視圖模型。視圖模型應該與視圖的需求密切對應,並且經常從幾個基礎實體中檢索數據。

然後,屬性將在視圖模型屬性上,而不是在實體上。

查看模型也可以彌補您的應用程序中大量分配漏洞的風險,如果您在實體中使用延遲加載,這些特別危險。

1

另一種解決方法(使用CodeFirst)是使用Fluent驗證。 CustomerValidator將始終指向重新生成的客戶類別(除非明顯更改客戶類名稱)

using FluentValidation; 

public class CustomerValidator : AbstractValidator<Customer> { 
    public CustomerValidator { 
    RuleFor(customer => customer.Surname).NotNull(); 
    } 
}