2011-09-09 47 views
1

我们一个MANT一对多的学生和教授之间的关系数据库模型(与桥台),但在我们的entites我们想要将它建模为一对多的关系,即学生有一位教授。流利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); 
      }); 
     } 

回答

0

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

你只是从映射教授学生多对一对多的关系,它总是在C#一个简单的列表。

这是不可能将其对应为学生从一个单一的结局参考教授。但是你可以在一个私人属性映射教授的名单和实施刚刚返回的第一个元素教授属性:

private IList<Professor> professors; 

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

那么我们如何会映射这个?你不能这样做......'HasManyToMany (x => x.Professors)'因为该字段是私人的,我们不能使用公共属性,因为这不是一个列表。 –

+0

对不起,我不能说如何映射看起来像,我不使用流利...它必须是某种HasManyToMany。必须有一些方法来映射字段。 –

+0

看看这篇文章如何在FNH中映射私人收藏http://stackoverflow.com/questions/781443/private-collection-mapping-in-fluent-nhibernate –

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"); 
相关问题