覆盖entity framework实体属性

我在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' 

有任何想法吗?

问候,

瑞安

遗憾的是你无法改变它。 您必须创建元数据类并将元数据属性添加到该类。 见以下链接:

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

看看这个链接,看看生成元数据类的一些问题,我通常做的是,如果我改变了一些东西,我只需通过添加一个新服务重新生成元数据类,然后删除服务然后合并两个保留旧的更改和保留新添加的实体。

不幸的是,您不能为POCO中生成的属性添加任何注释。

可能的解决方法是修改TT模板,以便为要仅定位的给定属性+实体添加所需的自定义注释。

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

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

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

实际上我认为你也想删除覆盖(因为你没有覆盖父属性。)