【问题标题】:NHibernate mapping hasmany multiple columnsNHibernate 映射有许多多列
【发布时间】:2013-12-20 08:09:01
【问题描述】:

我在映射 has-many 关系时遇到了麻烦。 我的关系表看起来像

Person_Id - Connected_Person_Id - Relation_Type

1                        2                            1
3                        1                            2

我有一个人实体,它有与关系表相关的 PersonConnection 列表 问题是我想在关系中映射它的 person_id 或 connected_person_id 在这种情况下对于 id 为 1 的人它将映射两行。

我想插入相反的行,但这似乎浪费内存。 或者我可以在类中而不是在映射中操作数据。

任何帮助/建议将不胜感激 谢谢

【问题讨论】:

  • 就我个人而言,我总是添加两行,因为这可能会带来更好的性能,并且如果您以后想要单向关系也更灵活

标签: nhibernate


【解决方案1】:

您迟早需要知道是哪个人发起了连接。您可以按照 Rippo 在评论中的建议添加 2 行或映射 2 个集合并适当地命名它们

// simple sample showing the idea
class Person
{
    public virtual int Id { get; private set; }
    public virtual IEnumerable<Person> ConnectedPersons { get; private set; }
    public virtual IEnumerable<Person> PersonsConnectingToMe { get; private set; }
    public virtual IEnumerable<Person> AllConnectedPersons { get { return ConnectedPersons.Concat(PersonsConnectingToMe); } }

    // Add Remove from collections here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多