爲什麼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
,但我仍然有同樣的問題。