次のクラスを想定します。
public class A
{
public virtual ind Id { get; set; }
public virtual int Number { get; protected set; }
}
public class B : A
{
public virtual string SomeValue { get; set; }
public virtual int BookingNumber
{
get { return Number; }
set { Number = value; }
}
}
public class C : A
{
public virtual string SomeOtherValue { get; set; }
public virtual int AccountNumber
{
get { return Number; }
set { Number = value; }
}
}
ご覧のとおり、プロパティ Number を別の名前で公開したいと考えています。
次に、A、B、C をマッピングします。
public class AMap : ClassMap<A>
{
public AMap()
{
Id(x => x.Id);
Map(x => x.Number);
}
}
public class BMap : SubclassMap<B>
{
public BMap()
{
Map(x => x.SomeValue);
}
}
public class CMap : SubclassMap<C>
{
public CMap()
{
Map(x => x.SomeOtherValue);
}
}
このマッピングを使用すると、データをデータベースに保存できます。
ただし、BまたはCにクエリを実行すると:
Session.QueryOver<B>().Where(x => x.BookingNumber).List();
エラーが表示されるcould not resolve property: BookingNumber of: B
私は何を間違っていますか?