OData函数与ViewModel和Expand

时间:2019-04-19 14:36:59

标签: c# odata

我正在尝试在c#ODataController中创建odata函数,该函数将返回自定义模型。这是一个简单的部分,并且工作正常。

现在,我也想允许$ expand用于相关实体,有人可以指导我如何进行此操作。

班级

public class UserPerformanceSummary
{
    public int UserID { get; set; }

    public virtual User User { get; set; }

    public int TargetsAcheived { get; set; }
}

WebApiConfig.cs

var userPerformanceSummarySet = builder.EntityType<UserPerformance>()
                .Collection
                .Function("GetSummary")
                .ReturnsCollectionFromEntitySet<UserPerformanceSummary>("UserPerformanceSummary");

OData控制器(UserPerformanceController.cs)

[HttpGet]
[EnableQuery(MaxExpansionDepth = 6)]
public IQueryable<UserPerformanceSummary> GetSummary()
{
    return this.context.Users
    .Select(a=> new UserPerformanceSummary {
        UserID = a.ID,
        User = a,
        TargetsAcheived = a.Targets.Sum(x=>x.Amount)
    });
}

我正在尝试使用此网址进行调用

http://localhost:57099/UserPerformance/GetSummary()?$expand=User

错误: “在LINQ to Entities中不支持指定的类型成员'User'。仅支持初始化程序,实体成员和实体导航属性。”

但是当我尝试不使用$ expand进行调用时,它将返回UserID和其他字段,但是我想扩展相关的导航属性。

http://localhost:57099/UserPerformance/GetSummary()

0 个答案:

没有答案