【发布时间】:2014-09-12 17:55:50
【问题描述】:
我有两个实体:
public class Parent
{
public virtual int Id { get; set; }
}
public class Child
{
public virtual int Id { get; set; }
public virtual int ParentId
{
get
{
if (Parent != null)
return Parent.Id;
return -1;
}
set
{
if (Parent != null)
Parent = new Parent();
Parent.Id = value;
}
}
protected virtual Parent Parent
{
get;
set;
}
}
Parent 属性是这样设置的,以简化 API 端,我不想更改它以公开此属性。我重写了 Child 类的映射以适应这种情况:
public class ChildMappingOverrides : IAutoMappingOverride<Child>
{
public void Override(AutoMapping<Child> mapping)
{
mapping.References<Parent>(Reveal.Member<Child>("Parent")).Column("Parent_id");
mapping.IgnoreProperty(x => x.ParentId);
}
}
现在,如果我想查询给定父 ID 的所有 Child 对象,我会执行以下操作:
session.QueryOver<Child>().Where(c => c.ParentId == 1);
但是,这会引发 QueryException:
无法解析属性:ParentId of: My.Namespace.Child
如何检索具有特定 Parent Id 的 Child 对象集?
【问题讨论】:
标签: c# nhibernate fluent-nhibernate queryover