我有兩個實體: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