【问题标题】:Fluent nHibernate and mapping IDictionary<DaysOfWeek,IDictionay<int, decimal>> how to?Fluent nHibernate 和映射 IDictionary<DaysOfWeek,IDictionay<int, decimal>> 怎么样?
【发布时间】:2011-02-06 12:09:15
【问题描述】:

我在使用 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);

这不起作用。重要的是,我希望将所有东西都放在一张桌子上,而不是放在两张桌子上。虽然我已经从第二本字典中上课了,但我遇到了更大的问题。但首先我可以像现在一样尝试。

【问题讨论】:

  • 这让我的脑袋爆炸了……o_O

标签: nhibernate mapping fluent idictionary


【解决方案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

【讨论】:

  • 好的,但是当我这样做时,我仍然有映射问题你能写出如何以正确的方式映射这个吗?
  • 我不使用 Fluent。使用 hbm,它是一个简单的 ,请阅读 knol.google.com/k/fabio-maulo/nhibernate-chapter-6/…。我不知道 FNH 等价物是什么。
  • 我已经尝试过您的解决方案,但现在我现在不知道如何在 hbm 中映射它。你能帮帮我吗?
  • 好的,我已经做到了:)如果有人想要解决方案只问;)
猜你喜欢
  • 2011-01-12
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2012-01-02
  • 2011-04-10
  • 2012-10-19
  • 2011-07-19
  • 1970-01-01
相关资源
最近更新 更多