当前位置: 首页 > 知识库问答 >
问题:

包括不为实体框架LINQ查询工作[重复]

甄成弘
2023-03-14

我有这样一个数据库模型:

public class Customer
{
    public int CustomerId{ get; set; }

    public int OrderId { get; set; }
    public ICollection<Order> Orders { get; set; }
}

public class Order
{
    public int OrderId { get; set; }
    public int Amount { get; set; }

    public int ProductId { get; set; }
    public Product Product { get; set; }
}

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
}

所以我们有一个客户可以做一个订单。这个订单包括一个产品,这个订单包括一个名称。我现在尝试用如下所示的linq语句返回完整的模型:

_db.Customer.Include(c => c.Orders).ThenInclude(o => o.Product).SingleOrDefaultAsync();

但是theninclude(o=>o.product)不起作用,因为Orders是一个ICollection。来自德国的问候,并提前感谢任何帮助。

共有1个答案

燕宏胜
2023-03-14

要在EF 6中加载相关实体,您应该使用select方法,如下所示:

_db.Customer.Include(c => c.Orders.Select(o=>o.Product)).SingleOrDefaultAsync();

在EF Core中添加了theninclude方法,这是EF的最后一个版本。

 类似资料:
  • 问题内容: 我正在尝试使以下内容起作用: 导致异常的部分是: 编辑: 经过进一步观察, (在首次致电后,没有)为我完成了这项工作。 问题答案: 看来您无法对查询中的children集合进行排序。在查询之后进行排序,或者在第二个查询中加载子级。 类似的问题和答案在这里

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额

  • 我有三个实体类。 我正在尝试查询我的实体,并获得给定的人的所有位置。到目前为止我有这个方法。 问题是我还想为每个地点获得城市的名称。当我从Location表获取cityID时,Location实体的City属性返回NULL。为什么那是空的?我如何修改我的查询以获得城市名称?如有任何提示,将不胜感激。

  • 但结果是一样的。 这是我的.hbm.xml文件中的内容: 对于用户: 我做错了什么?如果查询参数不是“简单”类型,我需要做一些特殊的事情吗?

  • 问题内容: 使用实体框架返回人名列表,其中人名包含字符串数组中的文本。 比方说: 和查询 这将编译并运行,但是该过程实际上是从数据库中调用所有记录,然后对返回的数据执行我的where子句。这是有道理的。 有没有一种方法可以重写查询,以便在SQL中生成where子句? 问题答案: 我假设dataContext.People是来自的,并且不涉及实现的指令,例如或。 答案在这里:http : //www

  • 这里的结果是错误的,我不确定为什么。请帮忙