流利的nhibernate:将多对多关系映射为一对多的关系

时间:2011-09-09 11:55:16

标签: fluent-nhibernate

我们在学生和教授之间的数据库(带有桥接表)中建立了一对多的关系,但在我们的网站中,我们希望将其建模为一对多的关系,即学生有一位教授。

这是我们的尝试,但它不起作用:

protected StudentMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);

            Join("student_professor_selected", m =>
            {                                                  
                m.KeyColumn("student_professor_selected_key");
                m.References(x => x.Professor);
             });
        }

2 个答案:

答案 0 :(得分:0)

加入是完全不同的东西。它用于将类的一部分放入另一个表(一对一)。

您只需映射教授与学生之间的多对多关系,它始终是C#中的简单列表。

无法将其映射为从学生到教授的单个结束参考。但是你可以在一个私有财产中映射一个教授名单,并实现一个教会财产,它只返回第一个元素:

private IList<Professor> professors;

public Professor Professor { get { return professors.First(); } }

答案 1 :(得分:0)

感谢您的帮助,我的解决方案如下。在教授课上我添加了以下内容:

private IList<Professor> _professors;
public Professor Professor { get { return _professors.First(); } }

然后要映射这个我做了以下,其中professor_student_selected是用教学键映射教学键的桥表

HasManyToMany<Students>(Reveal.Member<Professor>("_professors")).Table("professor_student_selected").ChildKeyColumn("student_key").ParentKeyColumn("professor_key");