故事: 我有class User和class Organization:User。我沒有使用這些類的映射,讓FNH自動映射。然後,我添加了流利的NHibernate:覆蓋不在基類中的派生類自動映射
public class OrganizationMap : IAutoMappingOverride<Organization>
{
public void Override(AutoMap<Organization> mapping)
{
}
}
請注意,沒有重寫。所以我沒有想到FNH行爲有任何變化。但是我得到這個(過程模式實際出口):
NHibernate.MappingException: (XmlDocument)(2,4): XML validation error: The element 'class' in namespace 'urn:nhibernate-mapping-2.2' has incomplete content. List of possible elements expected: 'meta, subselect, cache, synchronize, comment, tuplizer, id, composite-id' in namespace 'urn:nhibernate-mapping-2.2'.
生成Orders.Core.Organization.hbm.xml真的空:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="">
<class name="Orders.Core.Organization, Orders.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Organizations" xmlns="urn:nhibernate-mapping-2.2" />
</hibernate-mapping>
所以,我回顧了User.hbm我後想到這個主意 - 我需要重寫組織在基類中是這樣的:
public class UserMap : IAutoMappingOverride<User>
{
public void Override(AutoMap<User> mapping)
{
mapping.JoinedSubClass<Organization>("ColumnId", m => {...}
);
}
}
不過,我會更好地喜歡做這在組織一個單獨的映射覆蓋類...畢竟,會是什麼樣的映射成爲如果我在單個覆蓋方法中有5個子類。
這可能嗎?
我想要重寫他們自己的映射類中的子類,也就是在OrganizationMap中聲明類似「IsSubclassOf()」。 –
queen3
2009-08-25 07:34:35