c# - 向派生类型添加属性

标签 c# entity-framework

我正在使用 .我有一个名为 Company 的部分类,它是由 EF 生成的。部分类看起来像:

The type 'BaseModels.Company' already contains a definition for 'CompanyName'"

public partial class Company {
    public string CompanyId { get; set; }
    public string CompanyName { get; set; }
}

我想做的是从 Company 创建一个具有额外属性的派生类。

public class MyCompany : Company {
    public string UploadName { get; set; }
}

但我想用自定义属性修饰基类型属性 CompanyName。

我去了以下地点: How do I add an attribute to the field of the base class from child class?

这确实回答了我的问题。问题是,如果我将基类中的 CompanyName 属性标记为“虚拟”,那么 EF 可能会重新生成覆盖我的内容的代码。

我试图定义一个分部类,但当我尝试添加时 VS 2013 提示:

public partial class Company {
    [Renderer("html")]
    public virtual string CompanyName { get; set; }
}

声明属性名称已经存在。

我该如何绕过这个障碍?

最佳答案

您不能使用分部类定义已经存在的属性。您在需要使用 MetadataTypeAttribute 的现有属性上添加属性。创建部分类:

[MetadataType(typeof(CompanyMetadata))]
public partial class Company { }

并使用具有所需属性的属性将元数据类添加到您的项目中:

public class CompanyMetadata
{
    [Renderer("html")]
    public string CompanyName { get; set; }
}

关于c# - 向派生类型添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616648/

相关文章:

c# - Entity Framework : Incorrect data while using Many-to-many relationship

c# - 如何重写此 Linq 查询以避免使用 FirstOrDefault?

c# - 使用 .NET 4.5 async、await 将 Azure blob 异步下载到字符串

c# - 选定索引上网格中文本框的 Asp.Net 更改值已更改

c# - iteratee 的范围太广

c# - 在 Entity Framework 中获取前五名最重复的记录

c# - Entity Framework 6 w/DatabaseGenerateOption.Compulated : column does not allow nulls. INSERT 失败

c# - 使用 .Net 将字符串转换为 XML

C# Html 敏捷包 ( SelectSingleNode )

c# - 如何在 Startup.cs 之外设置数据库连接字符串用户名和密码?