【问题标题】:RIA services and nHibernate insert new problemRIA 服务和 nHibernate 插入新问题
【发布时间】:2011-01-19 11:31:16
【问题描述】:

我结合了 RIA 服务和 nHibernate。 nHibernate 配置为在数据库端使用身份。因此,新实体的 id 为 0。 nHibernate 可以正常工作。它从数据库更新生成的密钥并更新实体。

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

InvestObject 
 - MaterialItems
 - WorkItems

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

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

在客户端有一个快速修复,只是为 Material 生成一些虚拟的负 id。这适用于 RIA,保存会传播到服务器端。但随后 nHibernate 触发错误,因为它期望所有新 ID 为 0 而不是给定值 ()。所以这是不行的。

最后,我通过将所有新 ID 重置为 0 来欺骗 nHibernate。但这并不让我高兴。这是凌乱丑陋的解决方案。

请帮忙

【问题讨论】:

    标签: silverlight nhibernate ria


    【解决方案1】:

    我已经有一段时间没有这样做了,所以细节很模糊,但我认为你基本上不能使用在 RIA 服务的数据库中生成的 ID。我们改用了 HiLo 算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多