Silverlight RIA服务和nHibernate插入新问题

Silverlight RIA服务和nHibernate插入新问题,silverlight,nhibernate,ria,Silverlight,Nhibernate,Ria,我有RIA服务和nHibernate的组合。nHibernate配置为在数据库端使用标识。因此,新实体的id为0。nHibernate的工作方式应该是这样的。它更新从数据库生成的密钥并更新实体 我有合成层次结构的例子。我的实体很复杂,它有两个集合 InvestObject - MaterialItems - WorkItems 我在一个工作单元中使用此结构。在Silverlight应用程序中获取和显示数据没有问题。但如果我试图在客户端的MaterialItems集合中添加多个项目,则在保

我有RIA服务和nHibernate的组合。nHibernate配置为在数据库端使用标识。因此,新实体的id为0。nHibernate的工作方式应该是这样的。它更新从数据库生成的密钥并更新实体

我有合成层次结构的例子。我的实体很复杂,它有两个集合

InvestObject 
 - MaterialItems
 - WorkItems
我在一个工作单元中使用此结构。在Silverlight应用程序中获取和显示数据没有问题。但如果我试图在客户端的MaterialItems集合中添加多个项目,则在保存时会出现以下错误:

提交操作失败。无效的 变更集:对于给定的项目,只有一个条目 实体实例可以存在于 变更集。在 System.ServiceModel.DomainServices.Server.ChangeSet.ValidateChangeSetEntries(IEnumerable
1
changeSetEntries)位于
System.ServiceModel.DomainServices.Server.ChangeSet..ctor(IEnumerable
1 changeSetEntries)

客户端有一个快速修复程序,只需为材质生成一些虚拟的负ID。这适用于RIA,并将save传播到服务器端。但nHibernate会触发错误,因为它期望所有新ID为0,而不是给定值()。所以这是不好的

最后,我通过将所有新ID重置为0来欺骗nHibernate。但这并不能让我快乐。这是一个肮脏丑陋的解决方案


请帮助

我这么做已经有一段时间了,所以细节不清楚,但我认为您基本上不能使用RIA服务在数据库中生成的ID。我们使用了HiLo算法