class Profile { string name; Book[] books}
class Book { string name }
两个单独的个人资料(A和B)都与同一本书有关系。
当我使用WCF / RIA从Silverlight逐个加载配置文件时。我最终得到了两个同名的书对象。 (同一本书!)。我希望RIA能够检测到这本书已经存在于silverlight中并使用现有实例而不是第二次创建它。
它们是POCO(复杂对象 - 不在DB中)。
如何告诉RIA名称是唯一的,并且Silverlight(RIA客户端)中不能有两个具有相同名称的实例?
UPDATE 自从问我已经实现了一个替代方法 - 我真的不认为它是一个优雅的解决方案!但这里是: GetProfile上的回调方法被替换为遍历所有profile.books并检查每本书是否已存在于本地词典中的方法。如果本书存在于本地,则使用本地书籍并删除第二个实例。如果不是这本书被添加到字典中并使用。
解 我创建了自己的Book-class clientide,然后将RIA创建的bookss转换为我自己的book-type。当我将更新的书籍发送回服务器时,我创建了RIA Books的实例,在更新任何属性之前,我之后调用OnDeserializing()和OnDesriallized()。这允许我编辑RIA-Book。
答案 0 :(得分:0)
解 GetProfile上的回调方法被替换为遍历所有profile.books并检查每本书是否已存在于本地词典中的方法。如果本书存在于本地,则使用本地书籍并删除第二个实例。如果不是这本书被添加到字典中并使用。
我创建了自己的Book-class clientide,然后将RIA创建的bookss转换为我自己的book-type。当我将更新的书籍发送回服务器时,我创建了RIA Books的实例,在更新任何属性(如FavouriteBook)之前,我之后调用OnDeserializing()和OnDesriallized()。这允许我编辑RIA-Book。