Я пытаюсь создать функцию odata в c # ODataController, которая будет возвращать пользовательскую модель.Это простая часть, и она работает нормально.
Теперь я хочу разрешить $ расширения и для связанной сущности, может кто-нибудь подскажет мне, как это сделать.
Класс
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)
});
}
Я пытаюсь вызвать его с помощью этого URL
http://localhost:57099/UserPerformance/GetSummary()?$expand=User
Ошибка: «Указанный элемент типа« Пользователь »не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей."
Но когда я пытаюсь вызвать без $ expand, он возвращает UserID и другие поля, но я хочу, чтобы связанные свойства навигации были расширены.
http://localhost:57099/UserPerformance/GetSummary()