繁体   English   中英

覆盖实体框架实体属性

[英]Override Entity Framework Entity Property

我在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();
        }
    }
}

但我得到了这个;

CC.Models.Profile ”类型已包含“FirstName”的定义

有任何想法吗?

问候,
瑞安

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM