OData - 如何扩展基本实体

时间:2018-03-21 12:26:14

标签: c# entity-framework-6 asp.net-web-api2 odata odata-v4

我使用Asp.Net WebApi Odata V4和Entity Framework 6。 我试图扩展派生类的导航属性,但是我得到了错误。

基本实体

public abstract class BaseEntity
{
    [ForeignKey("CreatedUser")]
    public string CreatedBy { get; set; }

    public virtual User CreatedUser { get; set; }
}

实体

public class Book: BaseEntity
{
    public int BookId {get;set;}
}

Odata模型构建器

builder.EntityType<BaseEntity>();
builder.EntitySet<Book>("Books");

Odata查询

http://localhost/svc/Books(1)?$expand=CreatedUser

错误:

  

&#39; TypeAs&#39;带有&#39; App.Models.Book&#39;类型的输入的表达式和a   检查类型&#39; App.Models.BaseEntity&#39;不受支持。只有实体   LINQ to Entities查询支持类型和复杂类型。

我如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

对于您的模型构建者,请勿将BaseEntity注册为 EntityType ,而应使用具体类型:

builder.EntityType<Book>();
builder.EntitySet<Book>("Books");