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