3
我有實體定義如下:NHibernate的:無法解析繼承id屬性
public class Foo : Entity<Foo.FooId>
{
public class FooId
{
public virtual String Bar { get; protected internal set; }
public virtual Int32 Buzz { get; protected internal set; }
}
// ...
}
而這裏的基類:
public abstract class Entity<T> : IEquatable<Entity<T>>
{
public virtual T Id { get; protected internal set; }
// ...
}
我要地圖「標識」屬性作爲「複合鍵」,所以我添加了以下映射類:
public class FooMap : ClassMapping<Foo>
{
public FooMap()
{
ComponentAsId(x => x.Id, m =>
{
m.Property(p => p.Bar);
m.Property(p => p.Buzz);
});
}
}
而這一切都很不錯,但我得到一個錯誤以下查詢嘗試:
session.QueryOver<Foo>()
.Where(m => m.Id.Bar == "a" &&
m.Id.Buzz == 2).List();
我得到的錯誤是: NHibernate.QueryException:無法解析屬性:Id的:富
這是很奇怪的,因爲通過去除基類和封裝一切在「Foo」中,它就像一個魅力。 在此先感謝。
你嘗試製作ID二傳手公衆,而不是受保護的內部? –
@Stefan 是的,它並沒有解決我的問題。 – NicolaBaldi
我剛碰到同樣的問題。解決它的任何運氣? – Nathan