流畅的 nHibernate 和映射 IDictionary>怎样?

发布于 2024-08-28 00:58:56 字数 461 浏览 7 评论 0 原文

我在使用 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 上课时,我遇到了更大的问题。但首先我可以像现在一样尝试。

I have problem with making mapping of classes with propert of type Dictionary and value in it of type Dictionary too, like this:

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

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

My mapping looks like this:

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

This doesn't work. The important thing I want have everything in one table not in two. WHet I had maked class from this second IDictionary I heve bigger problem. But first I can try like it is now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

微暖i 2024-09-04 00:58: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

It's not currently possible to use nested collections of any type in NHibernate.

Instead, you should define your property as follows:

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

And add a new class:

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; }
}

This way, you can map both classes and dictionaries normally, and still access your dictionary as:

class1Instance.Class1Dictionary[DayOfWeek.Sunday][1] = 9.4
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文