首页 > 解决方案 > EF 核心 - 在这种情况下最有效的查询

问题描述

对不起,我必须使用代码匿名化

我使用 EF Core 并有 4 个数据库实体:

class A
{
 public int AId {get; set;}
 public ICollection<AB> ABs {get; set;}
}

class AB
{
 public int ABId {get; set;}
 public A A {get; set;}
 public B B {get; set;}  
}

class B
{
 public int BId {get; set;}
 public ICollection<AB> ABs {get; set;}
 public ICollection<C> Cs {get; set;}
}

class C
{
 public int CId {get; set;}
 public int UId {get; set;}
 public B B {get; set;} 
}

我正在寻找最有效的查询。我得到AIdUId。我想在所有的地方到达A哪里。如果没有with for some (in ) 我想为 that 返回 new { } 。AId.AId = AIdCC.UId = UIdCUIdBA->AB->B->CCB = BB

我写了这样的东西,后来对这个对象进行了操作。但我认为它没有效果,因为我从数据库中加载了所有UQ

var result = context.QS
            .Where(qs => qs.QSId == QSId)
            .Include(qs => qs.QSQ)
            .ThenInclude(qsq => qsq.Q)
            .ThenInclude(q => q.UQ)
            .FirstOrDefault();

标签: c#entity-frameworklinqentity-framework-core

解决方案


这是你需要的吗?我只得到了 TableC 的 1 个数据。

var tableA = db.TableA.Where(x => x.TableAid == 2)
                      .Include(x => x.TableAb)
                      .Include("TableAb.TableB")
                      .Include("TableAb.TableB.TableC")
                      .FirstOrDefault();

在此处输入图像描述

在此处输入图像描述


推荐阅读