2009-12-09 92 views
0

我有以下类别:映射数组的单列

public class InventoryItem 
{ 
    private Usage[] usages = new Usage[12]; 
    virtual public Usage[] Usages { get { return usages; }} 
    virtual public string Name{get;set;} 
} 

public class Usage 
{ 
    virtual public double Quantity{get;set;} 
    virtual public string SomethingElse{get;set;} 
} 

我知道Usages.Length永远是12.我认为这将是最好的 将其存储在数据库中,如下所示:

Name nvarchar(64), 
Usage_Quantity_0 float, 
Usage_SomethingElse_0 nvarchar(16), 
Usage_Quantity_1 float, 
Usage_SomethingElse_1 nvarchar(16), 
... 
Usage_Quantity_11 float, 
Usage_SomethingElse_11 nvarchar(16), 

我该怎么做到这一点?

回答

0

怎么样一个getter/setter转换为/从一个数组和12私人领域?在Hibernate(我不知道NHibernate)中,映射可以放在字段上,并且可以使用embeddable实体将Usage映射到InventoryItem中的2列。如果可嵌入的实体在NHibernate中不可用,那么您将需要24个字段。

即使存在固定的基数,一对多关系也许仍然是可取的。如果您担心性能问题,请搜索N + 1问题并提前进行提取。

+0

是的,NHibernate支持相当于可嵌入的实体,在这种情况下称为组件:https://www.hibernate.org/hib_docs/nhibernate/html/components.html – ewernli 2009-12-09 20:28:55