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

Fluent nhibernate 流畅的nhibernate:将多对多关系映射为一对多关系,fluent-nhibernate,Fluent Nhibernate,我们在数据库中建立了一个多对多关系模型,并在学生和教授之间建立了一个桥接表,但在我们的实体中,我们希望将其建模为一对多关系,即一个学生有一个教授 这是我们的尝试,但不起作用: protected StudentMap() { Id(x => x.Id); Map(x => x.Name); Join("student_professor_selected", m =>

我们在数据库中建立了一个多对多关系模型,并在学生和教授之间建立了一个桥接表,但在我们的实体中,我们希望将其建模为一对多关系,即一个学生有一个教授

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

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

加入是完全不同的。它用于将一个类的部分一对一地放入另一个表中

您只需将教授和学生之间的多对多关系映射,它在C语言中始终是一个简单的列表

不可能将其映射为从学生到教授的单一结尾引用。但您可以在私有属性中映射教授列表,并实现只返回第一个元素的教授属性:

private IList<Professor> professors;

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

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

private IList<Professor> _professors;
public Professor Professor { get { return _professors.First(); } }
为了映射这个,我做了下面的工作,professor_student_选择了一个桥接表来映射professor键和student键

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

那么我们将如何绘制这张地图呢?你不能这么做……`HasManyToManyx=>x.Professors`因为该字段是私有的,我们不能使用公共属性,因为它不是列表。对不起,我不能说映射的确切形式,我没有使用Fluent。。。一定是有点太多了。一定有办法映射字段。看看这篇关于如何在FNH中映射私有集合的文章