【发布时间】:2009-11-03 11:46:43
【问题描述】:
我有两个类,其中一个继承自另一个。我试图使用 NHibernate 来映射这些类,以便我可以尽可能高效地查询这两个类。 基类不是抽象的,需要能够独立查询。基类看起来像这样。
public class Cat
{
public int Id { get; set; }
public string Name { get; set; }
}
派生类看起来像这样:
public class CustomerCat : Cat
{
public int CustomerId { get; set; }
}
派生简单扩展了基础并为其添加了更多属性。我的映射文件是这样的
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Foo"
namespace="Foo">
<class name="Cat" table="Cat">
<id name="Id" column="CatId" type="Int32" unsaved-value="0">
<generator class="native" />
</id>
<property name="Name" column="CatName" type="string" />
<joined-subclass name="CustomerCat" table="CustomerCat">
<key column="CatId" />
<property name="CustomerId " column="CustomerId" />
</joined-subclass>
</class>
</hibernate-mapping>
我遇到的问题是,如果我通过以下方式查询 Cats:
IList<Cat> cats = session.CreateCriteria<Cat>().List<Cat>();
生成的 sql 将通过joined-subclass 表离开join。我可以在查询中不引用任何派生类表的情况下查询我的基类吗?
【问题讨论】:
标签: c# nhibernate nhibernate-mapping