我在使用Dictionary类型的属性和类型为Dictionary的值的类映射时遇到问题,如下所示:
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开始上课了,我有更大的问题。但首先我可以尝试现在的样子。
答案 0 :(得分:1)
目前无法在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