【发布时间】:2011-11-04 11:40:48
【问题描述】:
我在编写使用“where in”子句的 HQL 查询时遇到问题。
简化的类如下所示:
class Parent
{
public virtual Int64 Id { get; private set; }
public virtual string Name { get; private set; }
}
class Child
{
public virtual Int64 Id { get; private set; }
public virtual string Name { get; private set; }
public virtual Parent Parent { get; private set; }
}
映射定义如下:
class ParentMap : ClassMap<Parent>
{
Id(x => x.Id);
Map(x => x.Name);
}
class ChildMap : ClassMap<Child>
{
Id(x => x.Id);
Map(x => x.Name);
References(x => x.Parent);
}
我想获取属于某些Parent 项目的Child 实例,所以我编写了以下代码:
// get children for several parents (a flattened list)
IEnumerable<Parent> parents = GetParents();
// use hql
IQuery q = Session.CreateQuery("from Child as c where c.Parent in (:parents)");
q.SetParameter("parents", parents);
但问题是,我在q.SetParameter 收到以下异常:
[编辑]
我尝试使用q.SetParameter("parents", parents.Select(p => p.Id);,但我得到了同样的异常。
【问题讨论】:
标签: c# nhibernate hql where-in