首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架核心C#:我在生成的Get语句中包含的列表对象中的对象有问题

实体框架核心C#:我在生成的Get语句中包含的列表对象中的对象有问题
EN

Stack Overflow用户
提问于 2021-06-05 08:51:33
回答 1查看 48关注 0票数 0

我有一个问题:我在我的前端使用了一个C# REST API,但是我有一个似乎不能添加到我的对象中的对象列表,我返回了一个get all:

代码语言:javascript
复制
    // 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列表

我尝试过不同的方法,比如:

代码语言:javascript
复制
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中的任何想法如何解决这个问题,我搜索了堆栈溢出,但我不知道如何找到这个问题,所以希望有人知道解决这个问题的线程或有人知道答案。

所以问题是:我如何填满食物?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-05 09:11:33

您可以在调用Include()之后使用ThenInclude(),其中选择了FoodItem的内部属性。

代码语言:javascript
复制
    // 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以了解每个表的外键。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67845376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档