nhibernate - 如何使用 NHibernate 查询外键列,而不检索相关实体

标签 nhibernate nhibernate-criteria

假设我有两个类: ParentChildParent 有一个属性 Children ,它当然是 Child 对象的集合。
Child 没有 ParentId 属性。它确实有一个 Parent 属性。

因此,我对 Child 的 NHibernate 映射包括:

<many-to-one name="Parent" class="Parent" column="ParentId" cascade="save-update" />

我的 Parent 映射包括:
<bag name="children" access="field" inverse="true" cascade="all-delete-orphan">
    <key column="ParentId" />
    <one-to-many class="Child" />
</bag>

现在这就是我想要做的:我想使用特定的 Child 获取所有 ParentId 对象。我知道我可以先获取 Parent,然后返回其 Children 属性。但是如果我想直接查询 Child 表怎么办?

如果它是一个映射属性(例如, Name ),我可以使用 NHibernate 的标准,但在这种情况下, ParentId 没有映射。

我尝试使用类似的东西:
criteria.Add(Restrictions.Eq("Parent.Id", 1));

但这不起作用。我求助于使用 SQLCriterion(如 here 所解释的),但一位 friend /同事让我认为必须有更好的方法。

有任何想法吗?有投影和 Restrictions.EqProperty 的东西?

最佳答案

我已经使用 query over 完成了这项工作。下面是一个例子:

Child foundChild = 
    session.QueryOver<Child>()
        .Where(x => x.Parent.Id == 1234).SingleOrDefault<Child>();

关于nhibernate - 如何使用 NHibernate 查询外键列,而不检索相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8807187/

相关文章:

c# - 基础实体类。 N休眠

c# - Spring.net Nhibernate dao 为空

nhibernate - 有人试图为 .NET 4.0 Beta 2 重新编译 NHibernate 吗?

nhibernate - 为什么 NHibernate.Cache.HashtableCacheProvider 不适合生产使用?

c# - 如何为给定的 sql 查询创建条件查询

c# - Fluent NHibernate - ProjectionList - ICriteria 返回空值

c# - 为隐式 ToList() 调用设置 NHibernate 超时值

nhibernate - 带有类型检查 "is"运算符的 Where 子句不使用鉴别​​器

NHibernate 将字符串参数转换为 nvarchar 而不是 varchar。我怎样才能阻止这个?