2011-04-16 215 views
4

我在EF中有一个名为Profile的实体,我想将数据注解属性添加到此实体的“FirstName”属性中,所以我创建了一个新的分类类似于此;覆盖实体框架实体属性

public partial class Profile : EntityObject 
{ 
    [Required] 
    [Display(Name = "First Name")] 
    [EdmScalarPropertyAttribute(EntityKeyProperty = false, IsNullable = false)] 
    [DataMemberAttribute()] 
    override public global::System.String FirstName 
    { 
     get 
     { 
      return _FirstName; 
     } 
     set 
     { 
      OnFirstNameChanging(value); 
      ReportPropertyChanging("FirstName"); 
      _FirstName = StructuralObject.SetValidValue(value, false); 
      ReportPropertyChanged("FirstName"); 
      OnFirstNameChanged(); 
     } 
    } 
} 

但我得到这个;

The type 'CC.Models.Profile' already contains a definition for 'FirstName' 

任何想法?

问候,

瑞安

回答

5

您可惜不能改变这样的。您必须创建一个元数据类并将元数据属性添加到该类。见下面的链接:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

看一看this链接查看与生成的元数据类的一些问题,我通常做的是,如果我改变的东西我只是通过添加新的服务,并删除再生metadataclass之后的服务,然后将两者合并,保留旧的更改并保留新添加的实体。

+0

我试过这一个,但这是行不通的。 – 2017-07-25 10:28:02

-1

我相信你必须标记你的财产的部分为好。

其实我想你也将要删除的覆盖(因为你没有覆盖parent属性。)

+6

你不能标记一个属性为部分... – 2011-04-16 21:27:46

0

不能遗憾地将任何注释添加到在POCO中生成的属性。

一种可能的解决方法是修改TT模板以添加您想要的给定属性+实体的自定义注释,该属性+实体仅用于目标。

当我想使用企业库实现验证时,我在以前的项目中遇到了同样的问题。我最终创建了一个部分类,并编写了使用注释装饰的方法。

对于您的情况,您可以尝试在部分类中创建一个属性(使用不同的名称),该属性返回顶部带有注释的EF实体属性。

相关问题