【发布时间】:2011-01-19 11:31:16
【问题描述】:
我结合了 RIA 服务和 nHibernate。 nHibernate 配置为在数据库端使用身份。因此,新实体的 id 为 0。 nHibernate 可以正常工作。它从数据库更新生成的密钥并更新实体。
我有一个组合层次结构的例子。我的实体很复杂,它有两个集合。
InvestObject
- MaterialItems
- WorkItems
我在一个工作单元中使用这种结构。在 Silverlight 应用程序中获取和显示数据没有问题。但是,如果我尝试在客户端的 MaterialItems 集合中添加多个项目,则保存时会出现此错误:
提交操作失败。无效的 ChangeSet:给定的只有一个条目 实体实例可以存在于 变更集。在 System.ServiceModel.DomainServices.Server.ChangeSet.ValidateChangeSetEntries(IEnumerable
1 changeSetEntries) at System.ServiceModel.DomainServices.Server.ChangeSet..ctor(IEnumerable1 更改集条目)
在客户端有一个快速修复,只是为 Material 生成一些虚拟的负 id。这适用于 RIA,保存会传播到服务器端。但随后 nHibernate 触发错误,因为它期望所有新 ID 为 0 而不是给定值 ()。所以这是不行的。
最后,我通过将所有新 ID 重置为 0 来欺骗 nHibernate。但这并不让我高兴。这是凌乱丑陋的解决方案。
请帮忙
【问题讨论】:
标签: silverlight nhibernate ria