我试图获得在RIA中工作的演示模型(讨论here和here)。我能找到的所有例子都是简单的,平坦的数据实体,没有1多或多多的关系,这是我无法工作的 - 特别是更新和插入到关联关系中。RIA服务演示模型具有一对多或多对多关系
查询我可以正常工作 - 我有我的表示类用关联属性标记(并在适当情况下包括属性),并且我对数据如何加载到客户端并作为实体进行维护有很好的理解。我也有插入新的实体覆盖。但是,我遇到以下问题。对于下面的例子,假设我们有简单的专辑和艺术家实体,其中一个专辑有一个艺术家,而一个艺术家可以有零到多个专辑。两者都有一个Name属性。
- 在客户端,如果我执行myArtist.Albums.Add(anAlbum)或myArtist.Albums.Remove(anAlbum),则不会发生任何事情。 HasChanges返回false。 (请注意,myArtist和anAlbum仅通过加载实体并迭代获取对特定实体的引用而在代码中获得:我没有在UI中执行任何操作,也没有在DomainDataSources中执行任何操作,只是在周围徘徊)。
- 如果我更新Artist和SubmitChanges上的名称,则在服务器上调用Update方法时,相册集合为空。
有没有人有任何建议,或者你可以指我一个例子,使用更复杂的对象?
编辑(保留上述的后代):好的,看起来第二个问题(在服务器上调用Update时显示为空的实体或实体集合的引用)存在,因为子实体没有标记为已更改,因此它们未被序列化并发回。我知道你可以通过使用[Composition]强制这种情况发生,并且我已经得到它的工作方式,但这不是一种组合关系,我希望这两个实体都是“顶级”实体。我如何将实体标记为已更改?