【发布时间】:2015-09-17 13:28:31
【问题描述】:
我正在与entity-framework 合作。我有一个由 EF 生成的名为 Company 的部分类。部分类看起来像:
“BaseModels.Company”类型已包含“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; }
}
通过声明属性名称已经存在。
我该如何绕过这个障碍?
【问题讨论】:
-
what does VS2013 complain about???.. 还有你在哪里覆盖它在子类..? -
从 Visual Studio 生成的错误消息显示“'BaseModels.Company' 类型已经包含 'CompanyName' 的定义”。这是来自我试图在同一个项目中定义的部分类。
-
这是 EF Database First..?如果是这样,这里是一步一步阅读的链接stackoverflow.com/questions/19021991/…
-
无法从派生类型向非虚拟基成员添加属性。并且您不能使用
partial来更改 成员,只能添加 成员。我会硬着头皮使用不同的类型。使用实体类型just 来操作数据,并将它们映射到您可以随意装饰的“域”类型。除非你想做一些奇怪的映射,否则像 AutoMapper 这样的工具可以让它变得非常轻松。
标签: entity-framework c# entity-framework