流利的nHibernate和映射IDictionary >如何?

问题描述:

我有问题,使得类映射型词典的PROPERT和价值在它型词典的太像这样:流利的nHibernate和映射IDictionary <DaysOfWeek,IDictionay <int,decimal >>如何?

public class Class1 
    { 
    public virtual int Id { get; set; } 

    public virtual IDictionary<DayOfWeek, IDictionary<int, decimal>> Class1Dictionary { get; set; } 
    } 

我的映射是这样的:

Id(i => i.Id); 
HasMany(m => m.Class1Dictionary); 

这没有按”工作。我希望的重要事情是把一切都放在一张桌子上,而不是两张。当我从这第二个IDictionary中创建类时,我遇到了更大的问题。但首先,我可以尝试像现在这样。

+1

这使我的头部爆炸... o_O – 2010-04-10 17:52:56

目前不可能在NHibernate中使用任何类型的嵌套集合。

相反,你应该如下定义属性:

public virtual IDictionary<DayOfWeek, Class2> Class1Dictionary { get; set; } 

,并添加一个新的类:

public class Class2 
{ 
    public virtual decimal this[int key] 
    { 
     get { return Class2Dictionary[key]; } 
     set { Class2Dictionary[key] = value; } 
    } 

    public virtual IDictionary<int, decimal> Class2Dictionary { get; set; } 
} 

这样一来,就可以正常的类和字典映射,并且仍然可以访问您的字典为:

class1Instance.Class1Dictionary[DayOfWeek.Sunday][1] = 9.4 
+0

好的,但是当我让喜欢é这我仍然有问题与映射可以你写如何以正确的方式映射这个? – szkra 2010-04-11 16:32:13

+0

我不使用Fluent。使用hbm,这是一个简单的,请阅读http://knol.google.com/k/fabio-maulo/nhibernate-chapter-6/1nr4enxv3dpeq/9。我不知道FNH相当于什么。 – 2010-04-12 01:04:36

+0

我已经试过你的解决方案,但现在我不知道如何映射这个甚至在HBM。你可以帮我吗 ? – szkra 2010-04-14 18:16:11