为什么NHibernate不能访问从抽象基类继承的属性。当我尝试使用在QueryOver
属性的Where
子句中我得到NHibernate无法解析继承属性的属性
无法解析属性:ID:TheWorkshop.Web.Models.Customer
var customer = Session.QueryOver<Customer>()
.Where(c=>c.ID ==id)
.SingleOrDefault<Customer>();
智能感知帮助我建立查询和解决方案编译,所以有是和ID
属性在Customer
类。 Customer上的ID
属性继承自摘要Contact
类,该类继而继承DomainEntity<T>
,该DomainEntity<T>
公开受保护的字段。
public abstract class DomainEntity<T>
{
protected Guid _persistenceId;
//...
}
public abstract class Contact : DomainEntity<Contact>
{
public virtual Guid ID
{
get { return _persistenceId; }
}
public virtual Address Address
{
get { return _address; }
set { _address = value; }
}
//...
}
,并在映射文件
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="TheWorkshop.Web"
namespace="TheWorkshop.Web.Models"
default-access="field.camelcase-underscore"
default-lazy="true">
<class name="Contact" table="Contacts" abstract="true">
<id name="_persistenceId" column="ID" type="Guid" access="field"
unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid.comb" />
</id>
<!-- ... -->
<union-subclass name="Customer" table="Customers">
继answer to a similar question我从NHibernate 3.3.2.4000
更新NHibernate 3.3.3-CR1
,但我仍然有同样的问题。