Я использую EF Core и .NET Core 2.0.
У меня есть эта иерархия сущностей:
Мой запрос LINQ в сервисе работает, но возвращает только один OrderItem, а у меня 5. Он также хорошо возвращает продукт для этого OrderItem.Поэтому я хочу изменить этот запрос, чтобы он включал фактически все элементы OrderItem, которые у меня есть для определенного идентификатора заказа, а не только первый элемент.Я ожидал, что include сделает эту работу за меня.
public class Order
{
public int Id { get; set; }
public DateTime OrderDate { get; set; }
public decimal TotalPrice { get; set; }
public List<OrderItem> OrderItems { get; set; }
public decimal CalculateTotal()
{
return OrderItems.Sum(item => item.GetPrice());
}
}
public class OrderItem
{
public int Id { get; set; }
public int OrderId { get; set; }
public int ProductId { get; set; }
public int Quantity { get; set; }
public Product Product { get; set; }
public Order Order{ get; set; }
public decimal GetPrice()
{
return Product.Price * Quantity;
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
, и это сервис с запросом:
public class OrderRepository: IOrderRepository
{
private readonly BasketDbContext _basketDbContext;
public OrderRepository(BasketDbContext basketDbContext)
{
_basketDbContext = basketDbContext;
}
public IEnumerable<Order> GetAllOrders()
{
return _basketDbContext.Orders
.Include(x => x.OrderItems)
.ThenInclude(y => y.Product).ToList();
}
}
И это JSON, который я получил от метода GetAllOrders:
[
{
"id":1,
"orderDate":"2019-02-02T11:24:36.103",
"totalPrice":0.0000,
"orderItems":[
{
"id":1,
"orderId":1,
"productId":1,
"quantity":1,
"product":{
"id":1,
"name":"Samsung Galaxy S8 64GB",
"description":"5.8-Inch, Dual pixel 12MP camera",
"price":390.0000
}
Как видите, JSON также плохо отформатирован, он не закрывает начальные [{.
Что я делаю неправильно?Спасибо за помощь