创建部分类时发生错误

问题描述:

我正在开发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

你不显示在您的问题中定义了ILocation,但错误表示Location.Name属性声明与ILocation.Name成员不同。

编辑:您的两个部分类似乎在两个不同的命名空间中,因此它们实际上是两个完全不同的类,而不是同一类的两个部分。这将解释编译器错误。

话虽如此,我同意其他答案(+1!),您应该在视图模型上进行UI验证。

+0

请现在检查... – nilesh1foru 2012-08-04 12:45:14

首先,你不需要这样做,我的理解是你试图做验证的权利?想想看,由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