2014-06-20 137 views
1

我有一個模型Supplier它是由EntityFramework數據庫第一種方法生成的。我將它包裝在我的ViewModelSupplierViewModel中,這使得它可以通過WPF用戶界面輕鬆顯示和編輯。這裏是我的模型:驗證實體框架模型類

public partial class Supplier:IDataErrorInfo 
{ 
    public Supplier() 
    { 
     this.TblPurchases = new HashSet<TblPurchase>(); 
     this.TblPurchaseOrders = new HashSet<TblPurchaseOrder>(); 
     this.TblSupplierAddresses = new HashSet<TblSupplierAddress>(); 
    } 

    public int SupplierId { get; set; } 
    public string SupplierName { get; set; } 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Country { get; set; } 
    public string ZipCode { get; set; } 

    public virtual ICollection<TblPurchase> TblPurchases { get; set; } 
    public virtual ICollection<TblPurchaseOrder> TblPurchaseOrders { get; set; } 
    public virtual TblUser TblUser { get; set; } 
    public virtual ICollection<TblSupplierAddress> TblSupplierAddresses { get; set; } 
    public virtual TblCompany TblCompany { get; set; } 

    #region IDataErrorInfo members 

    //Validation logic put here 

    #endregion 

} 

我把驗證邏輯在這個模型類使用IDataErrorInfo。我的問題是當我使用Entity Framework wizard從數據庫生成模型類時,我丟失了更改(IDataErrorInfo)。爲什麼我失去了變化?那麼我如何在這裏驗證我的模型類?

回答

1

由於自動生成嚮導正在從頭開始重新創建這些類,所以更改丟失。

解決此問題的最佳方法是在其他文件夾中創建另一個部分類。也許調用文件夾IDataErrorInfoPartials或有意義的東西。然後創建你的類如下:

public partial class Supplier:IDataErrorInfo 
{ 
    #region IDataErrorInfo members 

    //Validation logic put here 

    #endregion 
} 

然後編譯器將它們組合成一個類。

我想你需要確保兩個部分都佔據相同的命名空間。

Here is a link about partial classes.

0

當您使用數據庫首先,你的模型類是自動生成的,其指的是數據庫的表類。因此,當您從數據庫生成模型類時,它將爲表中所有字段和關係創建屬性。你的錯誤信息細節不是表格的一部分,所以當你生成新的表格時顯然不會出現。

您可以使用部分類或DTO類來添加驗證邏輯。不要修改自動生成的類。