0
class Profile { string name; Book[] books} 

class Book { string name }

两个单独的配置文件(A 和 B)都与同一本书有关系。

当我使用 WCF/RIA 从 Silverlight 中一一加载配置文件时。我最终得到了两个同名的书对象。(同一本书!)。我希望 RIA 检测到这本书已经存在于 silverlight 中,并使用现有实例而不是第二次创建它。

它们是 POCO(复杂对象,不在 DB 中)。

如何告诉 RIA 名称是唯一的,并且 Silverlight(RIA 客户端)中不能有两个具有相同名称的实例?

更新自从询问我已经实施了一个解决方法 - 虽然我并不认为它是一个优雅的解决方案!但这里是:GetProfile 上的回调方法被替换为遍历所有 profile.books 并检查每本书是否已存在于本地 Dictionary 中的方法。如果该书在本地存在,则使用本地书并删除第二个实例。如果不是,则将这本书添加到字典中并使用。

解决方案我创建自己的 Book-class 客户端,然后将 RIA 创建的书籍转换为我自己的书籍类型。当我将更新后的 Books 发送回服务器时,我会创建 RIA Books 的实例,并在更新任何属性之前调用 OnDeserializing() 和 OnDesriallized()。这允许我编辑 RIA-Book。

4

1 回答 1

0

解决方案 GetProfile 上的回调方法被替换为遍历所有 profile.books 并检查每本书是否已存在于本地 Dictionary 中的方法。如果该书在本地存在,则使用本地书并删除第二个实例。如果不是,则将这本书添加到字典中并使用。

我创建自己的 Book-class 客户端,然后将 RIA 创建的书籍转换为我自己的书籍类型。当我将更新后的 Books 发送回服务器时,我会创建 RIA Books 的实例,然后在更新任何属性(如 FavouriteBook)之前调用 OnDeserializing() 和 OnDesriallized()。这允许我编辑 RIA-Book。

于 2012-04-25T13:54:16.977 回答