无法在类型';上定义键;用户';源自';人物';.只有实体继承层次结构中的根类型才能包含键
本文关键字:类型 层次结构 实体 继承 包含键 源自 定义 人物 用户 | 更新日期: 2023-09-27 18:22:02
我正在使用Web API 2.2项目和OData4包+实体框架6。
我有一个User
类,它继承自People
类。People
类本身继承自Person
类。
[Table("People")]
public class People : Person
{ }
public class User: People
{
[Key]
public int UserId { get; set; }
[ForeignKey("Anonymous")]
public int AnonymousId { get; set; }
}
当我执行代码时,在这行上的WebApiConfig::Register
方法中抛出异常
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel());
错误:
System.Web.OData.dll中发生类型为"System.InvalidOperationException"的异常,但未在用户代码中处理
附加信息:无法在派生自"People"的类型"User"上定义键。只有实体继承层次结构中的根类型才能包含键。
我已经尝试了在中给出的解决方案http://stack247.wordpress.com/2013/02/28/cannot-define-keys-on-type-deriving-from-only-root-type-in-entity-inheritance-hierarchy-can-contain-keys/
但它没有起作用。
我试过了:
builder.EntityType<User>().DerivesFrom<People>();
builder.EntityType<People>().DerivesFrom<Element>();
根据Gert的建议,我们已经从子类中删除了key属性
这已经解决了问题。