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

C# 附加在RIA服务中修改的对象,c#,silverlight,wcf-ria-services,C#,Silverlight,Wcf Ria Services,我有一个客户端silverlight应用程序,它使用RIA服务连接到数据库 我有一个本地数据缓存,其中包含所有加载实体的列表,并且我的上下文总是空的,这使我可以使用多个逻辑视图在同一数据库表中创建多个查询,并更好地刷新(支持删除和处理服务器触发器以进行更改) 现在我的问题是,当一个实体发生更改时,我想将其附加到EntitySet并将这些更改提交给服务器,attach函数附加对象为未修改的 因此,我的问题是如何在RIA服务的客户端将实体附加为modified。我知道如何在服务器端执行此操作,但我需

我有一个客户端silverlight应用程序,它使用RIA服务连接到数据库 我有一个本地数据缓存,其中包含所有加载实体的列表,并且我的上下文总是空的,这使我可以使用多个逻辑视图在同一数据库表中创建多个查询,并更好地刷新(支持删除和处理服务器触发器以进行更改)

现在我的问题是,当一个实体发生更改时,我想将其附加到
EntitySet
并将这些更改提交给服务器,
attach
函数附加对象为
未修改的


因此,我的问题是如何在RIA服务的客户端将实体附加为
modified
。我知道如何在服务器端执行此操作,但我需要在silverlight中执行此操作,从上下文-使用.Attach-方法。这将把一个实体“附加”回一个上下文,允许上下文跟踪对该实体的更改。发出save命令时,上下文将执行相应的命令来CRUD服务器上的实体

首先尝试附加实体,然后将EntityState设置为已修改

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

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

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

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

谢谢您的回答,但是在silverlight EntityState中的只读属性中,为什么不先附加实体,然后进行修改?这会将实体更改为“已修改”