我正在与entity-framework合作。我有一个由EF生成的名为Company的部分类。部分类看起来像:
“BaseModels.Company”类型已包含“CompanyName”的定义“
public partial class Company {
public string CompanyId { get; set; }
public string CompanyName { get; set; }
}
我想要做的是从公司创建一个具有额外属性的派生类。
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; }
}
通过声明属性名称已经存在。
我如何克服这个障碍?
答案 0 :(得分:1)
您不能使用已存在的部分类定义属性。您需要使用MetadataTypeAttribute在现有属性上添加属性。创建部分类:
[MetadataType(typeof(CompanyMetadata))]
public partial class Company { }
并使用具有所需属性的属性将元数据类添加到项目中:
public class CompanyMetadata
{
[Renderer("html")]
public string CompanyName { get; set; }
}
答案 1 :(得分:0)
让公司成为一个抽象类。然后使用带有CompanyName的override关键字添加自定义属性。您还可以添加UploadName。