我使用NH 3.3.1。 假設簡單的類:NHibernate 3.3.1顯式多態性
public class TestBase
{
public virtual int Id { get; set; }
public virtual string A { get; set; }
}
public class Test : TestBase
{
public virtual string B { get; set; }
}
和映射他們:
public sealed class TestBaseMap : ClassMap<TestBase>
{
public TestBaseMap()
{
this.Polymorphism.Explicit();
this.Id(a => a.Id).GeneratedBy.Identity();
this.Map(a => a.A);
}
}
public sealed class TestMap :SubclassMap<Test>
{
public TestMap()
{
this.Map(a => a.B);
}
}
即使Polymorphism.Explicit()規定,NH仍留有查詢TestBase時加入測試。
var a = this.Session.Get<TestBase>(1);
我真的不需要這個加入'cuz會有很多的子類。 我檢查了流利生成的xml。沒關係,「顯式」條款在那裏。我究竟做錯了什麼?
我試過這兩個查詢,並得到。沒有運氣。我會嘗試使用以前的NH版本。人們寫這個功能前段時間效果很好。 – Vitaly
沒有所有NH 3版本的運氣... – Vitaly
它也可能是您查詢基類的問題。您應該嘗試繼承所有具體實例。我在回答中添加了另一節。 –