[英]EF can't get the reference entity of navigation property of an entity
這是我的模特班
public class Serve
{
public int Id { get; set; }
public Table Table { get; set; }
public bool IsFinished { get; set; }
public decimal TotalMoney { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public Item Item { get; set; }
public int Numbers { get; set; }
public bool IsCheifReceived { get; set; }
public bool IsCheifCooked { get; set; }
public Serve Serve { get; set; }
public Order()
{
IsCheifCooked = IsCheifReceived = false;
}
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Unit { get; set; }
public decimal Price { get; set; }
public Category Category { get; set; }
public bool IsNeedToNotifyChief { get; set; }
}
我想對按相同項目(這是餐廳的菜單項)分組的訂單的數量和總金額求和。
這是LINQ查詢。
var serving = db.Serves
.Where(m => m.Table.Id == table.Id)
.Where(m => m.IsFinished == false)
.OrderByDescending(m => m.Id)
.FirstOrDefault();
var groupedOrder = serving.Orders
.OrderByDescending(m => m.Id)
.GroupBy(m => m.Item)
.Select(g => new
{
Item = g.Key,
Numbers = g.Sum(ri => ri.Numbers)
}).ToList();
但是在這種情況下,在.GroupBy(m => m.Item)
, m.Item
為null
,它將所有Orders分組為一組。 (我知道問題是此查詢中未加載m.Item
)
在這里,我不知道如何使m.Item加載到此LINQ查詢中。 請幫我做到這一點。
PS:我使用實體框架6
我認為變量服務是某些對象的列表,而不是查詢。 如果我是對的,那么當您從數據庫獲得服務時,應該包括項目 。 它看起來像下面的代碼:
var serving = db.Serves
.Include(x => x.Orders)
.Include(x => x.Orders.Select(x => x.Item)) //here you'll get your items
.Where(m => m.Table.Id == ta && m.IsFinished == false)
.OrderByDescending(m => m.Id)
.FirstOfDefault();
//and after that your code should work correctly
if(serving != null) //don't forget check it, if you use FirstOfDefault()
{
var groupedOrder = serving.Orders
.OrderByDescending(m => m.Id)
.GroupBy(m => m.Item)
.Select(g => new
{
Item = g.Key,
Numbers = g.Sum(ri => ri.Numbers)
}).ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.