gpt4 book ai didi

c# - nHibernate 析取不是预期的行为

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:05 24 4
gpt4 key购买 nike

我正在尝试分离两个条件,但结果不是预期的。我正在尝试获取一个人的所有书籍(在他的个人图书馆或他团队的图书馆中)。

第一个条件://返回 1

myBooks = session.CreateCriteria<Book>()
.CreateCriteria("Library")
.CreateAlias("Users", "usr")
.Add(Restrictions.Eq("usr.Id", myUserId))
.List().Count;

第二个条件//返回 1

myTeamsBooks = session.CreateCriteria<Book>()
.CreateCriteria("Library")
.CreateAlias("Teams", "grp")
.Add(Restrictions.In("grp.Id", myTeamsIds))
.List().Count;

析取//预期为 2,返回 0!!

allMyBooks = session.CreateCriteria<Book>()
.CreateCriteria("Library")
.CreateAlias("Users", "usr")
.CreateAlias("Teams", "grp")
.Add(Restrictions.Disjunction()
.Add(Restrictions.Eq("usr.Id", myUserId))
.Add(Restrictions.In("grp.Id", myTeamsIds))
)
.List().Count;

我在析取中做错了什么?我也尝试使用 .Add(Restrictions.Or( 得到相同的结果。

任何帮助将不胜感激!

最佳答案

这种情况下的问题与JOIN 类型有关。我们需要 LEFT 一个,但默认的 (未指定)INNER。因此,像这样调整 CreatAlias,应该会返回正确的结果:

.CreateAlias("Users", "usr", JoinType.LeftOuterJoin)
.CreateAlias("Teams", "grp", JoinType.LeftOuterJoin)

关于c# - nHibernate 析取不是预期的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22197841/

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