.NET Core OData – $expand не работает с ODataQueryOptions в серверной частиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 .NET Core OData – $expand не работает с ODataQueryOptions в серверной части

Сообщение Anonymous »

У меня есть контроллер, который имеет OdataQueryOptions в качестве параметра, следующим образом:

Код: Выделить всё

[EnableQuery]
public async Task Get([FromQuery] int? managerLevel,
[FromQuery] string? managerEmployeeNumber,
[FromQuery] bool isSearch = false,
ODataQueryOptions? options = null)
{
var userId = "[email protected]";
isSearch = true;

var employees = await mediator.Send(new ListEmployeesQuery(managerLevel, managerEmployeeNumber, userId, isSearch: isSearch), CancellationToken.None);

var filteredResults = options?.Filter.ApplyTo(employees.AsQueryable(), new ODataQuerySettings()) as IQueryable;

var expandedResults = options?.SelectExpand.ApplyTo(filteredResults, new ODataQuerySettings()) as IQueryable;

return Ok(employees);
}
И вот звонок:

Код: Выделить всё

https://localhost:7145/odata/ExportSearchResults/
?$filter=((contains(forename, 'dange')) or (contains(surname, 'dange')) or (contains(employeeNumber, 'dange'))) and (status eq true)
&$expand=PerformanceReviews,EngagementScores,TalentAssessments,SecuredEmployeeDetails
&isSearch=true&$top=5&$skip=0&$count=true
После возврата Ok(сотрудники) фильтр и расширение применяются правильно.
Кроме того, filteredResults возвращает правильные результаты с применением $filter. expandResults возвращает значение null.
Вот свойство SelectExpand:
Изображение

А вот моя конфигурация OData:

Код: Выделить всё

public static ODataConventionModelBuilder AddODataEntities(this ODataConventionModelBuilder modelBuilder)
{
modelBuilder.EntitySet("Employee").EntityType.HasKey(entity => entity.EmployeeId);
modelBuilder.EntitySet("PerformanceReview").EntityType.HasKey(entity => entity.Id);
modelBuilder.EntitySet("EngagementScores").EntityType.HasKey(entity => entity.Id);
modelBuilder.EntitySet("TalentAssessments").EntityType.HasKey(entity => new { entity.EmployeeId, entity.Year });
modelBuilder.EntitySet("TalentAssessmentAuditLogs").EntityType.HasKey(entity => new { entity.EmployeeId, entity.Year, entity.IdentityId, entity.EffectiveDate });
modelBuilder.EntitySet("EmployeeDetails").EntityType.HasKey(entity => new { entity.EmployeeId });
modelBuilder.EntitySet("MobilityConsiderations").EntityType.HasKey(entity => entity.Id);
modelBuilder.EntitySet("ExportSearchResults").EntityType.HasKey(entity => entity.EmployeeId);

return modelBuilder;
}
И оператор AddOData:

Код: Выделить всё

services.AddControllers().AddOData(opt => opt.Count().Filter().Expand().Select().OrderBy().SetMaxTop(100)
.AddRouteComponents("odata", builder.GetEdmModel()));
Есть идеи, что не так?
Заранее спасибо.
Я пытаюсь использовать то же самое фильтр, примененный во внешнем интерфейсе для экспорта того же результата в файл Excel, поэтому мне нужно, чтобы $expand и $filter работали правильно. В этом случае $expand не работает внутри контроллера. Только после возврата результата.

Подробнее здесь: https://stackoverflow.com/questions/788 ... he-backend
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ASP.NET CORE 6 WEB API API ODATA $ Команда Expand не работает с EF CORE 6 IQUERYABLE с проекцией
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Когда OData применяет ODataQueryOptions в .NET 8?
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Когда OData применяет ODataQueryOptions в .NET 8?
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Использование OData Expand с DTO
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Издевательство или прагматичное создание модульного теста ODataQueryOptions для .NET 5 Core Controller
    Гость » » в форуме C#
    0 Ответы
    47 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»