【发布时间】:2010-01-28 06:03:52
【问题描述】:
我正在尝试获得一个在 RIA 中工作的演示模型(讨论过 here 和 here)。我能找到的所有示例都是简单的平面数据实体,没有 1-many 或 many-many 关系,这是我无法使用的 - 特别是在更新和插入关联关系时。
查询我可以正常工作 - 我用关联属性(和包括属性,在适当的情况下)标记了我的演示类,并且我对如何将数据加载到客户端并作为实体在那里维护有很好的理解。我还插入了新实体。但是,我遇到了以下问题。对于以下示例,假设我们有简单的专辑和艺术家实体,其中专辑有一个艺术家,而艺术家可以有零到多个专辑。两者都有一个 Name 属性。
- 在客户端,如果我执行 myArtist.Albums.Add(anAlbum) 或 myArtist.Albums.Remove(anAlbum),则没有任何反应。 HasChanges 返回 false。 (请注意,myArtist 和 anAlbum 仅在代码中通过加载实体并迭代以获取对特定实体的引用而获得:我还没有在 UI 或 DomainDataSources 中做任何事情,只是在闲逛)。
- 如果我更新了 Artist 和 SubmitChanges 上的 Name,当在服务器上调用 Update 方法时,Album 集合为空。
有没有人有任何建议,或者你能指出一个使用更复杂对象的例子吗?
编辑(为后代保留上述内容):好吧,似乎存在第二个问题(对实体的引用或在服务器上调用 Update 时显示为 null 的实体集合)因为子实体没有被标记为已更改,因此它们没有被序列化和发回。我知道您可以通过使用 [Composition] 来强制实现这一点,并且我已经让它以这种方式工作,但这不是组合关系,我希望两个实体都是“顶级”实体。如何将实体标记为已更改?
【问题讨论】:
标签: wcf-ria-services presentation-model