gpt4 book ai didi

c# - 拒绝来自 DomainContext 的特定删除项目

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:02 25 4
gpt4 key购买 nike

我正在使用 Silverlight4 和 Ria 服务:

假设我们有一个包含 3 条记录(1、2、3)的表(称为“MyTable”),我刚刚在我的应用程序中的某处编写了以下代码:

CurrentItem  = 1;
MyContext.MyTables.Delete(CurrentItem);
CurrentItem = 2;
MyContext.MyTables.Delete(CurrentItem);

由于某些原因,在点击“保存”按钮之前,我想拒绝第一个删除的项目(1),但仍然想删除第二个(2)。这意味着我不能使用:

MyContext.RejectChanges()  

因为它会拒绝所有更改(包括我确实想删除的已删除项目)所以我虽然使用 IRevertibleChangeTracking 可以解决我的问题。像这样的事情:

((IRevertibleChangeTracking) MyItem).RejectChanges();

但在使用这个接口(interface)之前,我必须访问已删除的项目。起初,它试图通过 MyContext.MyTables 获取它,但它不包含已删除的记录,所以我尝试通过 EntityChangeSet 获取它:

EntityChangeSet Changes =  MyContext.EntityContainer.GetChanges();
MyTable DeletedItem = Changes.First<MyTables>( e => e.ID = 1 ) ;

然后我使用了 IRevertibleChangeTracking:

((IRevertibleChangeTracking) DeletedItem  ).RejectChanges();

但是在运行之后,这行代码并没有改变记录的状态,它被保持为“已删除”,所以通过点击“保存”按钮,它从数据库中物理删除了!!!!似乎 IRevertibleChangeTracking 不适用于已删除/添加的项目(它仅适用于已修改的项目)。

那么,有什么方法可以拒绝 DomainContext 中的特定删除项。

谢谢,

最佳答案

经过更多的搜索,我找到了 Colin Blair says: 的位置

Every RIA Services entity implements the IRevertibleChangeTracking interface. All you have to do is cast your entity to IRevertibleChangeTracking and call RejectChanges. RejectChanges does not work for new or deleted entities.

不是删除每个实体,而是可以将 bool 属性设置为 false,并在完成后删除标志设置为 false 的实体吗?

关于c# - 拒绝来自 DomainContext 的特定删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com