c# - 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;}
}
我正在寻找最有效的查询。我得到AId
和UId
。我想在所有的地方到达A
哪里。如果没有with for some (in ) 我想为 that 返回 new { } 。AId.AId = AId
C
C.UId = UId
C
UId
B
A->AB->B->C
C
B = B
B
我写了这样的东西,后来对这个对象进行了操作。但我认为它没有效果,因为我从数据库中加载了所有UQ
var result = context.QS
.Where(qs => qs.QSId == QSId)
.Include(qs => qs.QSQ)
.ThenInclude(qsq => qsq.Q)
.ThenInclude(q => q.UQ)
.FirstOrDefault();
解决方案
推荐阅读
- google-chrome - Charles Proxy vs Chrome 检查元素
- typescript - 在 TypeScript 中访问数组项之前检查它是否存在
- automated-tests - Botium 文件上传错误 - “Excel 注册失败 - 字段文件内容的值太长”
- scala - 无法覆盖scala中的可变参数方法?
- delphi - delphi-orm 是否支持枚举类型?
- python - 如何根据数据框(熊猫)中的值设置条形图(matplotlib)的颜色?
- react-native - this.props.navigation.navigate 没有导航到正确的屏幕
- apache-spark - 如何删除流数据中的重复项?
- json - 使用 laravel 将 if 语句放入 api
- typescript2.0 - 有没有更好的方法来制作 setter 非原始用户定义类型属性?