Odata $ orderby на сложную собственность в прогнозируемом DTOC#

Место общения программистов C#
Ответить
Anonymous
 Odata $ orderby на сложную собственность в прогнозируемом DTO

Сообщение Anonymous »

Я строю конечную точку ODATA, используя efcore и odataqueryoptions , и я хочу разрешить клиентам $ orderby свойство, которое происходит из вложенной коллекции в моей проекции.
Я использую asp.net aspnetcoreodata с минимальным api. DTOS: < /p>

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

public class Customer
{
public int Id { get; set; }
public string FullName { get; set; }
public DateTime DateOfBirth { get; set; }
public ICollection CustomerRatings { get; set; }
}

public class CustomerRating
{
public DateTime CreatedAt { get; set; }
public RatingType RatingType { get; set; }
}

public class CustomerSummaryDto
{
public int Id { get; set; }
public string FullName { get; set; }
public DateTime DateOfBirth { get; set; }
public CustomerRatingDto LatestRating { get; set; }
}

public class CustomerRatingDto
{
public RatingType RatingType { get; set; }
}

public enum RatingType
{
Low,
Medium,
High
}
< /code>
Мой запрос выглядит следующим образом: < /p>
var queryProjection = dbContext.Customers.Select(c => new CustomerSummaryDto
{
Id = c.Id,
FullName = c.FullName,
DateOfBirth = c.DateOfBirth,
LatestRating = c.CustomerRatings
.OrderByDescending(r => r.CreatedAt)
.Select(r => new CustomerRatingDto { RatingType = r.RatingType })
.FirstOrDefault()
});

var finalQuery = (IQueryable)queryOptions.ApplyTo(queryProjection, new ODataQuerySettings());
var result = await finalQuery.ToListAsync();
< /code>
Я хочу позволить клиенту делать: < /p>
GET /odata/CustomerSummaryDtos?$orderby=LatestRating/RatingType desc
< /code>
Но я получаю следующую ошибку: < /p>
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.1",
"title": "An error occurred while processing your request.",
"status": 500,
"detail": "Cannot apply ODataQueryOptions of 'MyApp.Dto.CustomerSummaryDto' to IQueryable of 'MyApp.Models.Customer'. (Parameter 'query')"
}
Как я могу включить $ orderby на вложенную/комплексную свойство в DTO, спроектированном из основного запроса EF с использованием Odata?

Подробнее здесь: https://stackoverflow.com/questions/797 ... jected-dto
Ответить

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

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

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

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

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