我正在使用 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/