我有一个问题:我在我的前端使用了一个C# REST API,但是我有一个似乎不能添加到我的对象中的对象列表,我返回了一个get all:
// GET: api/OrderMasters
[HttpGet]
public async Task<ActionResult<IEnumerable<OrderMaster>>> GetOrderMasters()
{
return await _context.OrderMasters
.Include(x => x.OrderDetails)
.ToListAsync();
}这是语句;我包含了订单详细信息,但在订单详细信息中,我想添加foodItem;我已经有了一个用于食品项目的控制器,它在我的DB上下文中

这是我得到的返回值,当我得到all时,您会看到食品项= null,但订单详细信息是OrderMaster中的OrderDetail列表
我尝试过不同的方法,比如:
var orderDetails = await (from master in _context.Set<OrderMaster>()
join detail in _context.Set<OrderDetail>()
on master.OrderMasterId equals detail.OrderMasterId
join foodItem in _context.Set<FoodItem>()
on detail.FoodItemId equals foodItem.FoodItemId
select new
{
master.OrderMasterId,
detail.OrderDetailId,
detail.FoodItemId,
detail.Quantity,
detail.FoodItemPrice,
foodItem.FoodItemName
}).ToListAsync();
// get order master
var orderMaster = await (from a in _context.Set<OrderMaster>()
select new
{
a.OrderMasterId,
a.OrderNumber,
a.PaymentMethod,
a.GrandTotal,
orderDetails = orderDetails
}).ToListAsync();这是我在互联网上找到的,我能得到的最接近的修复,但它给出了一些奇怪的错误,所以我试着在对象orderdetails的列表中填充对象食品项,这是在对象ordermaster中的任何想法如何解决这个问题,我搜索了堆栈溢出,但我不知道如何找到这个问题,所以希望有人知道解决这个问题的线程或有人知道答案。
所以问题是:我如何填满食物?
提前谢谢。
发布于 2021-06-05 09:11:33
您可以在调用Include()之后使用ThenInclude(),其中选择了FoodItem的内部属性。
// GET: api/OrderMasters
[HttpGet]
public async Task<ActionResult<IEnumerable<OrderMaster>>> GetOrderMasters()
{
return await _context.OrderMasters.Include(x=> x.OrderDetails).ThenInclude(x => x.FoodItem).ToListAsync();
}考虑到您的OrderDetails类中有一个名为FoodItem的字段,并且您已经正确地设置了DbContext以了解每个表的外键。
https://stackoverflow.com/questions/67845376
复制相似问题