2012-08-04 81 views
1

我正在開發MVC應用程序,其中,我試圖創建由MVC應用程序生成的部分類讓位置類說。創建部分類時發生錯誤

現在我想在新的類文件中創建位置類的部分類。

以下類代碼由位置代碼的MVC自動生成。

namespace CRM 
{ 
    public partial class Location 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Remark { get; set; } 
    } 
} 

我已經加入其中包含部分類上述文件的新的類文件

namespace CRMEntities.Partial_Class 
{ 
    public interface ILocation 
    { 
     [StringLength(50, ErrorMessage = "Region can accept maximum 50 characters.")] 
     string Region { get; set; } 

     [Key] 
     int Id { get; set; } 

     [Required] 
     string Name { get; set; } 

     string Remark { get; set; } 
    } 

    public partial class Location : ILocation 
    { 
    } 
} 

它給下面的錯誤... CRMEntities.Partial_Class.Location' does not implement interface member 'CRMEntities.Partial_Class.ILocation.Name

回答

1

你不顯示在您的問題中定義了ILocation,但錯誤表示Location.Name屬性聲明與ILocation.Name成員不同。

編輯:您的兩個部分類似乎在兩個不同的命名空間中,因此它們實際上是兩個完全不同的類,而不是同一類的兩個部分。這將解釋編譯器錯誤。

話雖如此,我同意其他答案(+1!),您應該在視圖模型上進行UI驗證。

+0

請現在檢查... – nilesh1foru 2012-08-04 12:45:14

3

首先,你不需要這樣做,我的理解是你試圖做驗證的權利?想想看,由EF生成的對象不是ViewModel,它們是域模型。數據註釋應該在視圖模型中,而不是域模型。

大多數情況下,經常誤用的是使用領域模型作爲視圖模型,但它不太正確。因爲有時候,視圖模型需要多個域模型來爲您的UI提供數據。

因此,爲了分離問題,您需要定義與視圖模型不同的視圖模型。 例如:您有Location類,您需要添加LocationViewModel類並將數據註釋放在此處。

您可以手動映射或使用AutoMapper來映射View Model和Domain Model。 另一個解決方案是你可以使用Fluent Validation,用這種方式,不用爲了驗證而有更多的部分類。

+0

嘿,謝謝,你能告訴我怎麼做的步驟?我第一次這樣做。 – nilesh1foru 2012-08-06 06:24:43

+0

您需要使用EF生成的模型分別創建View Model。然後,看看:http://www.codeproject.com/Articles/61629/AutoMapper如何將視圖模型映射到模型。然後,但視圖模型上的偏差 – 2012-08-06 08:19:37

相關問題