我正在尝试创建类表继承,如(http://www.castleproject.org/activerecord/documentation/trunk/usersguide/typehierarchy.html)
所以我想说我有两节课:
[ActiveRecord("entity"), JoinedBase]
public class Entity : ActiveRecordBase
{
private int id;
private string name;
private string type;
...and properties
}
[ActiveRecord("entitycompany")]
public class CompanyEntity : Entity
{
private byte company_type;
private int comp_id;
[JoinedKey("comp_id")]
public int CompId
{
get { return comp_id; }
set { comp_id = value; }
}
}
似乎没问题,所有测试都没问题。我在分析器中看到的一件事让我很生气,如果在其他类中使用Entity(它是一个属性)(让我们称之为World),那么在Entity和CompanyEntity上获取World外部连接的结果。 我希望它只是一个实体的加入!
任何人都可以帮助我并解释为什么会这样吗?
答案 0 :(得分:2)
ActiveRecord(实际上是NHibernate)必须在CompanyEntity上进行左连接,因为它必须知道实体的实际类型。如果不加入CompanyEntity,它就不可能知道它是否是一个CompanyEntity,因此它不会知道要实例化的。
换句话说,如果没有这个左连接,你的类层次结构就会破坏。
它并没有真正导致任何重大的性能问题,但如果它困扰你那么多尝试切换到另一种继承策略,如鉴别器。