2011-04-18 27 views
0

我正在構建一個小型web應用程序並使用nhibernate作爲我的DAL。 我有以下情況:Nhibernate - 級聯反轉不保存

Father class - Profile Class: 
{ 
    long ID 
    string Name 
    [A whole bunch of info] 
    List<Voting> Votes 
} 

Son class - Votes Class: 
{ 
    long id 
    short rating 
} 

這是我的映射:

HasMany(o => o.Votes) 
       .LazyLoad() 
       .AsBag() 
       .Inverse() 
       .Cascade.All(); 

我想以下情況發生: 用戶將能夠評價一個配置文件,然後將所有我需要做的只是簡介本身的通話更新,而不是在每個投票上發送保存通話。

這是我目前我正在做的事情:

var myProfile = new Profile(); 
myProfile.Rate(1,2); 
myProfile.Rate(5,2); 
myProfile.Rate(20,2); 
Session.SaveOrUpdate(myProfile); 

可悲的是沒有得到保存。爲什麼?

謝謝!

回答

1

如果您的一對多映射爲反向,則另一方需要知道父對象。所以你的Votes類需要一個引用到一個配置文件(映射爲多對一)。

您還必須確保在代碼中設置對父對象的此引用。

附加說明:您的代碼示例沒有多大意義。如果你創建一個新的配置文件,你必須調用Session.Save而不是Session.Update。

+0

你說得對,我已經在這裏和我的代碼更新了'SaveOrUpdate'。我試圖用一個相當簡單的代碼示例來簡化事情,但錯過了。 – vondip 2011-04-18 12:09:34