我正在尝试获得演示模型(讨论 这里这里)在RIA工作。我能找到的所有示例都是简单,平坦的数据实体,没有1次或多种关系,这是我无法正常工作的 - 具体来说,是在更新和插入关联关系中。

查询我可以工作正常 - 我的演示文稿类别标有关联属性(并在适当的情况下包括属性),并且我对如何将数据加载到客户端并在此维持为实体有很好的了解。我还涵盖了新实体的插件。但是,我正在遇到以下问题。在以下示例中,假设我们有简单的专辑和艺术家实体,专辑拥有单个艺术家,而艺术家的专辑可以使许多专辑的零。两者都有名称属性。

  • 在客户端,如果我做myartist.albums.add(analbum)或myartist.albums.remove(analbum),则什么都不会发生。 haschanges返回false。 (请注意,Myartist和Analbum仅通过加载实体并迭代以获取特定实体而获得代码中获得:我还没有在UI或domaindatasources中做任何事情,只是在四处徘徊)。
  • 如果我更新艺术家的名称和subbitchanges,当更新方法在服务器上调用时,专辑集合为null。

有人有任何建议,还是可以指出我使用更复杂对象的示例?

编辑 (保留以上的后代):好吧,似乎第二期(对“更新”在服务器上调用更新时显示为null的实体的引用或集合)存在,因为儿童entites未标记为更改为更改,并且因此,他们没有被序列化并退回。我知道您可以通过使用[构图]强迫这种情况,并且我已经这样做了,但这不是构图关系,我希望这两个实体都是“顶级”实体。我如何将实体标记为更改?

有帮助吗?

解决方案

问题是我的[关联]属性未正确定义。我没有意识到协会的属性在协会的两边都必须相同。当名称相同并进行构建时,客户端上的生成代码使用“父”使用的实体构造函数来指代“儿童”,而不是如果关联未正确设置的关联。新的构造函数接听回调,当您致电添加和删除该集合时会做一些额外的操作 - 具体来说,它们将您要添加或删除的子实体,并修改其属性,以指它的父母,以便其父母保留所有内容在同步中:您从对象,将其添加到的集合以及对象对其父的引用的集合。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top