我经常发现自己需要在RIAServices中编辑客户端的实体,仅用于UI目的,绝对无意将更改保存回数据库。但是,如果我没有在我的域服务中启用该实体的编辑,一旦我尝试更改其中一个实体上的字段,RIAServices就会抛出错误,并说该实体上没有启用编辑。
但问题是我不想允许在数据库中实际编辑实体,我只是想在客户端上乱用它。我还没有找到一个解决问题的好方法,似乎唯一的选择就是继续进行实际编辑,只是从不调用SubmitChanges()(这是一个非常可怕的想法),或做一个foreach循环当我加载实体并创建每个实体的新实例并复制其所有属性(基本上克隆我加载的实体,以便我不使用RIAServices加载的那些),但这很难实用。
我正在寻找(如果它存在)是在我加载之后,以某种方式“分离”我的客户端实体列表,以便RIAServices停止监视它们,我可以随意编辑它们(我将失去将它们保存起来的能力,但这是好的,因为我无论如何都不需要或想要。有任何想法吗?这让我疯了。
答案 0 :(得分:1)
您可以通过调用
轻松地从DomainContext
分离整个实体列表
DomainContext.MyEntities.Clear();
在执行此操作之前,只需将实体复制到另一个列表中,以便以后可以访问它们。 (我建议将它们保存在ViewModel中。)
简而言之,就这样做:
List<MyEntity>
。DomainContext.MyEntities.Clear();
SubmitChanges()
上发回服务器,因为它们不再保留在DomainContext
。答案 1 :(得分:0)
SubmitChanges只会在您的域名服务上调用必要的插入,更新,删除方法,所以您只需要调用方法throw new NotImplementedException();
或者只删除方法。对于正在调用的SubmitChanges,没有秘密的方法。