Функция OData с ViewModel и Expand - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь создать функцию 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...