在RIA服务中附加修改后的对象

时间:2013-09-21 07:49:48

标签: c# silverlight wcf-ria-services

我有一个客户端silverlight应用程序,它使用RIA服务连接到数据库 而不是EntitySet来管理实体我有一个包含所有已加载实体列表的本地数据缓存,并且我的上下文总是为空,这允许我创建多个查询,将多个逻辑视图放入同一个数据库表中,并且更好刷新(支持删除和处理服务器触发更改)。

现在我的问题是当实体发生变化并且我想将其附加到EntitySet并将这些更改提交到服务器时,Attach函数将对象附加为unmodified

所以我的问题是如何将实体作为modified附加在RIA服务的客户端。我知道如何在服务器端执行此操作,但我需要在silverlight中执行此操作

2 个答案:

答案 0 :(得分:0)

从上下文中 - 使用.Attach - 方法。这将"附加"实体返回上下文,允许上下文跟踪实体的更改。发出save命令时,上下文执行适当的命令以CRUD服务器上的实体。

首先尝试附加实体,然后将EntityState设置为Modified。

是的 - 我应该在回答之前阅读整个问题! :)

答案 1 :(得分:0)

您可以尝试使用Entity类的IEditableObject接口来解决您的问题。接口在Entity上显式实现,因此您必须将实例强制转换为接口。

MyEntity entity = new MyEntity();
MyEntitySet.Attach(entity);

((IEditableObject)entity).BeginEdit();
// edit the properties of the entity;
((IEditableObject)entity).EndEdit();