2011-09-09 81 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"); 
相關問題