我有两个实体:QueryOver使用忽略属性
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);
}
}
现在,如果我想查询所有Child
对象对于一个给定父ID,我会执行此:
session.QueryOver<Child>().Where(c => c.ParentId == 1);
然而,这将引发一个QueryException
:
无法解析属性:的的ParentId:My.Namespace.Child
如何检索具有特定Parent
ID的一组Child
对象?
我更喜欢这个:)谢谢安德鲁,它与我做的一个小小的调整,只是为了匹配我的例子中的列名称。 – 2014-09-12 19:31:50
@PatrickQuirk:没问题 - 我希望有一种更坚实的方式来做你以后的事情 – 2014-09-12 19:32:29