gpt4 book ai didi

c# - First/FirstOrDefault 没有像我预期的那样工作

转载 作者:行者123 更新时间:2023-11-30 15:01:01 24 4
gpt4 key购买 nike

<分区>

我正在使用 nhibernate 并编写了一个 linq 查询,但它没有返回我期望的结果。

public ParentA()
{
public virtual Id {get; set;}
public virtual Name {get; set;}
public virtual IList<ChildA> ChidrenA {get; set;}

public ParentA()
{
ChidrenA = new List<ChildA>();
}
}

public ChildA()
{
public virtual Id {get; set;}
public virtual Name {get; set;}
public virtual IList<ChildB> ChidrenB {get; set;}
public virtual ParentA ParenteA {get; set;}
public ChildA()
{
ChidrenB = new List<ChildB>();
}
}

public ChildB()
{
public virtual Id {get; set;}
public virtual Name {get; set;}
public virtual ChildA {get; set;}
}

上面的代码是我的域。 fluent nhibernate 是非常基础的,没有什么特别的,所以我没有包括它。

我的查询是

base.unitOfWork.Session.Query<ParentA>()
.Where(x => x.Id == parentAId)
.FetchMany(x => x.ChildrenA)
.ThenFetchMany(x => x.ChildrenB)
.FirstOrDefault();

我预期会发生什么

它将找到 1 或 0 个父记录。如果它确实找到一条记录,它将立即加载所有 ChildrenA,然后加载所有 ChildrenB。

发生了什么

它找到 1 或 0 个父记录。然后,ChildrenA 和 ChildrenB 只需要 1 条或 0 条记录。

为什么只取第一个找到的 ChildrenA 和 ChildrenB 的记录?

如果我将 FirstToDefault() 更改为 .toList() 我得到了我期望的一切,但我发现它毫无意义,因为该父记录应该只有一个记录。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com