Linq动态查询并包含非相关实体

时间:2017-04-09 12:45:34

标签: c# entity-framework linq dynamic-linq linq-expressions

我有一个场景,我有3个实体

class entityA
{
    public Guid Id { get; set; }
    public string NameA { get; set; }
}


class entityB
{
    public Guid Id { get; set; }
    public string NameB { get; set; }
    public entityA EntityA { get; set; }
}

class entityC
{
    public Guid Id { get; set; }
    public Guid HistoryId { get; set; }
}

EntityA和entityB有关系,但entityC与它们中的任何一个都没有关系。

要获取entityA和相关的entityB数据,我可以

db.entityA.Include(x=>x.entityB)

但我不能用entityA和entityC做include()因为entityA和entityC之间没有关系。

只有使用Linq Query语法才能实现:如下:

from A in entityA join C in entityC on A.Id equals C.HistoryId select A

是否有任何方法可以使用Linq Lambda语法包含()或加入entityA和entityC?

1 个答案:

答案 0 :(得分:0)

根据您的查询,逻辑上A和C之间存在关系。 您可以将ForeignKey属性放在C类实体映射中,然后可以在查询中使用Include。

class entityC
{
  public Guid Id { get; set; }

  public Guid HistoryId { get; set; }

  [ForeignKey("HistoryId")]
  public entityA EntityA { get; set; }
}