2011-01-19 124 views
3

我有RIA服務和nHibernate的組合。 nHibernate被配置爲在數據庫端使用身份。所以新的實體發送0爲id。 nHibernate的工作原理應該如此。它更新生成的密鑰表單數據庫和更新實體。RIA服務和nHibernate插入新問題

我有組合層次結構的例子。我的實體很複雜,它有兩個集合。

InvestObject 
- MaterialItems 
- WorkItems 

我在一個單位的工作中使用這種結構。在Silverlight應用程序中獲取和顯示數據是沒有問題的。但是,如果我嘗試在MaterialItems集合添加在客戶端的多個項目,節省當我得到這個錯誤:

Submit operation failed. Invalid ChangeSet : Only one entry for a given entity instance can exist in the ChangeSet. at System.ServiceModel.DomainServices.Server.ChangeSet.ValidateChangeSetEntries(IEnumerable 1 changeSetEntries) at System.ServiceModel.DomainServices.Server.ChangeSet..ctor(IEnumerable 1 changeSetEntries)

沒有在客戶端速戰速決,只是產生一些假陰性的ID,物料。這適用於RIA,保存傳播到服務器端。但是,然後nHibernate引發錯誤,因爲它期望所有新的Ids不是給定的值()。所以這不好。

最後,我通過將所有新的Ids重置爲0來欺騙nHibernate。但是這並不能讓我開心。這是凌亂的醜陋解決方案。

請幫

回答

0

這已經有一段時間,因爲我已經做到了這一點,因此細節朦朧,但我認爲你基本上不能使用在數據庫生成與RIA服務標識。我們使用了HiLo算法。