3
我有一個現有的POCO類庫,其中子集合都存儲在數組中。例如,客戶類有發票[]數組來保存它的發票:如果表中沒有索引,如何配置NHibernate映射到數組?
class Customer
{
public int ID;
public Invoice[] _invoices;
}
class Invoice
{
public int ID;
public int CustomerID;
public string SomeData;
}
我不能改變那些類,我想將它們映射到使用NHibernate現有的數據庫。
我看了<array>
映射,但它似乎需要一個<index>
元素。在我的數據庫中,[Invoice]
表沒有索引列。當客戶的發票被加載時,我不指望他們在陣列中的任何特定位置。
我有什麼選擇?
@ ChssPly76:這是一個非常大的項目,所以我願意投入相當多的時間來做到這一點不改變類和數據庫。如果我願意擴展NHibernate並提供自己的Array映射實現,該怎麼辦?這很簡單(我對NHibernate完全陌生,所以我不知道涉及到什麼)?我可以繼承默認的數組映射嗎?只能在運行和內存中生成順序索引值?也許我應該在NH郵件列表上討論這個問題...... – Sylvain 2009-11-17 04:07:28
你當然可以實現你自己的集合類型;你需要實現'IUserCollectionType'來完成,並通過映射中的'collection-type'屬性引用你的類名。這裏是關於這個主題的文章:http://www.javalobby.org/java/forums/m91832311.html;它處理Hibernate/java,但幾乎所有東西都應該直接移植到NHibernate中。 – ChssPly76 2009-11-17 04:23:02
@ ChssPly76:感謝您的指點。我檢查了'IUserCollectionType','ArrayType'和'PersistentArrayHolder'類。看起來好像我可以在沒有太多困難的情況下繼承'ArrayType'。 – Sylvain 2009-11-17 04:47:26