我使用 NH 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 时仍然离开连接 Test。
var a = this.Session.Get<TestBase>(1);
我真的不需要这个加入,因为会有很多子类。我检查了fluent生成的xml。没关系,“显式”条款就在那里。我究竟做错了什么?