gpt4 book ai didi

c# - Fluent NHibernate - 集合不过滤

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:42 26 4
gpt4 key购买 nike

我有一个 session 条件语句 (Fluent NHibernate),即使我定义了表达式/限制,它似乎也不会过滤子集合。

ICriteria criteria = session.CreateCriteria(typeof(MyClass));
criteria.CreateAlias("MyCollection", "MC");
criteria.Add(Restriction.Eq("MC.Property", value));
IList<MyClass> list = criteria.List<MyClass>();

这将返回类型为 MyClass 且具有 MyCollection.Property = value 的所有对象,但是 MyCollection 不会过滤到 MyCollection .属性 = 值

似乎只有 Root 对象被过滤了。

谢谢。

最佳答案

没错,它只会过滤根实体。如果查询更改了根实体集合中的项目,您可能会遇到一个可怕的问题:如果您再次保存该实体,则从集合中过滤掉的项目将永久地从关系中删除!并且肯定没有人想要那样。

如果您想要这种行为,您必须手动执行(在加载实体后通过 foreach),尽管出于上述原因我不推荐这样做。我的建议是使集合中的实体成为查询的根。

关于c# - Fluent NHibernate - 集合不过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587179/

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