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中映射私有集合的文章