我想這個類映射:Nhibernate繼承映射混合Type-Per-Hierarchy和Type-Per-Class?
public interface IBusinessObject
{
Guid Id { get; set; }
}
public class Product
{
public virtual Guid Id { get; set; }
public virtual int ProductTypeId { get; set; }
}
public class ProductWeSell : Product, IBusinessObject
{
}
public class ProductWeDontSell : Product
{
}
爲數據庫2個表:
[BusinessObject] COLUMNS ([Id])
[Product] COLUMNS ([Id], [ProdyctTypeId])
我想有型每級的BusinessObject的,和類型每層次與產品。這將導致此行爲:
- 添加產品:INSERT INTO產品{GUID),空}
- 添加ProductWeDontSell:INSERT INTO產品{GUID,2}
- 添加ProductWeSell:INSERT INTO BusinessObject的{GUID }; INSERT INTO產品{SameGuid,1}
按道理HBM映射應該是:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" name="IBusinessObject" table="BusinessObject">
<joined-subclass name="ProductWeSell" table="Product"/>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" discriminator-value="null" name="Product" table="Product">
<discriminator type="String">
<column name="ProductTypeId" not-null="false" />
</discriminator>
<subclass name="ProductWeDontSell" discriminator-value="2" />
<subclass name="ProductWeSell" discriminator-value="1" />
</class>
</hibernate-mapping>
,但我得到{ 「重複類/實體映射ProductWeSell」}錯誤。
剛剛學習這個,你有沒有想過用IMappingOverride做什麼? http://wiki.fluentnhibernate.org/Auto_mapping – kenny 2011-02-16 11:20:21
@kenny,不,我有聽說過IMappingOverride,但我知道有IAutoMappingOverride,但我不使用自動映射。 – 2011-02-16 11:24:17