我正在尝试在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()