如何在NHibernate中更改行的子類型?例如,如果我有一個客戶實體和TierOneCustomer的子類,我有一個情況是需要將客戶更改爲TierOneCustomer,但是TierOneCustomer應該具有與原始客戶實體相同的Id(PK)。NHibernate - 更改子類型
映射看起來是這樣的:
<class name="Customer" table="SiteCustomer" discriminator-value="C">
<id name="Id" column="Id" type="Int64">
<generator class="identity" />
</id>
<discriminator column="CustomerType" />
... properties snipped ...
<subclass name="TierOneCustomer" discriminator-value="P">
... more properties ...
</subclass>
</class>
我使用的每一個類,表層次模型,因此使用純SQL,它會只是一個的一個SQL更新的事鑑別器(CustomerType)並設置與該類型相關的適當列。我無法在NHibernate中找到解決方案,所以會感謝任何指針。
考慮到這個用例,我也在考慮模型是否正確,但在我走下那條路線之前,我想確保如上所述的實際上可能是首先實現的。如果沒有,我幾乎肯定會考慮改變模型。
是的,我想我要重構層次結構,並可能選擇簡單的屬性方法。很好的回答,謝謝。 – 2009-01-26 09:41:01