- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景:Silverlight 4 - RIA - Entity Framework 4
描述:我有一些删除代码:
db.Items.Remove(selectedItem);
db.SubmitChanges(deleteItemOperationCompleted, null);
这里,项目从域上下文中删除,然后服务尝试在 EF 上执行操作(EF 又在 DB 上执行操作)。
回调方法:
private void deleteOperationCompletedM(SubmitOperation op)
{
if (op.Error == null)
{
MessageBox.Show("Delete operation was successfull.");
// Some other code here (removed for brevity)
}
else
{
op.MarkErrorAsHandled();
MessageBox.Show("An error has occured." + op.Error.Message);
}
}
复制:我尝试删除该项目(由于数据库中的参照完整性约束而无法删除)。我收到错误发生的消息。没关系。当我随后尝试删除其他一些项目(与任何其他实体没有外键关联)时,我收到相同的消息,即使可以从数据库中删除该项目。
问题是我已经从域上下文中删除了第一项(即使它没有从数据库中删除)。因此,当我尝试删除第二项时,它也会从上下文中删除。提交更改时,最后一项可以从数据库中删除,但问题是更改是针对整个上下文提交的,因为在第一步中我已经删除了一个无法从数据库中删除的项目,提交操作失败。
问题在提交失败的情况下“回滚”操作的正确方法(最佳实践)是什么?我唯一能想到的就是创建另一个域上下文并再次加载数据,但由于加载的数据量,我想避免这种情况。上下文是否可以返回到某个先前的状态或取消未决的更改?如何解决这个问题?
最佳答案
在您的情况下,您应该调用 RejectChanges在您的 DomainContext 上取消项目的删除并更改其 EntityState回到未修改状态。
private void deleteOperationCompletedM(SubmitOperation op) {
if (op.Error == null) {
MessageBox.Show("Delete operation was successfull.");
// Some other code here (removed for brevity)
}
else{
op.MarkErrorAsHandled();
MessageBox.Show("An error has occured." + op.Error.Message);
db.RejectChanges(); // call reject changes on the DomainContext
}
}
关于c# - 在 SubmitOperation 失败时保持 DomainContext 最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671083/
我有一个 Linq-to-SQL RIA 服务和一个 silverlight 客户端。当 2 个人编辑同一个实体时,我在调用 SubmitChanges 时在 OnSubmitCompleted 中收
我正在使用 Silverlight4 和 Ria 服务: 假设我们有一个包含 3 条记录(1、2、3)的表(称为“MyTable”),我刚刚在我的应用程序中的某处编写了以下代码: CurrentIte
我正在开发 Silverlight 应用程序。我在我的应用程序中创建了静态 DomainContext,所以每个 DomainContext 只有一个。当我使用应用程序一段时间时,DomainCont
背景:Silverlight 4 - RIA - Entity Framework 4 描述:我有一些删除代码: db.Items.Remove(selectedItem); db.SubmitCha
如果您引用任何开发的 Silverlight MVVM 示例,您会发现每个 ViewModel 都有自己的 DomainContext。但是,我真的不认为需要 ViewModel 特定的 Domain
我有一个非常简单的服务器模型,其中包含一个带有 [Composition] 子实体列表的父实体。在我的客户中,我有两个功能。一个函数从父实体中删除所有子实体,另一个函数删除所有子实体并编辑父实体的属性
我有一个 Silverlight 页面,它从 View 模型类中获取数据,该类聚合了来自各种(RIA 服务)域服务的一些数据。 理想情况下,我希望页面能够将其控件数据绑定(bind)到 View 模型
对于 Entity Framework 上下文,最佳做法是只在您需要时才保留上下文。 Silverlight Domain Context 是否同样如此,还是将其保留更长时间“更安全”?如果您可以将它
我使用带有过滤器描述符的 DomainDataSource,但似乎 DomainDataSource(或 DomainContext)正在缓存旧数据,而不是用数据库中的新数据替换它。
将 Silverlight 3 与 RIA 结合使用:LoadOperation.Completed 事件与通过 DomainContext.Load 方法使用回调有何区别?两者都是异步触发的,并且都
我有一个 silverlight 4 应用程序,它使用带有 EF 的 RIA 来查询单个 DomainContext 中的多个表。 BUGroup、BUGroupBuilding 和 vwBusine
我是一名优秀的程序员,十分优秀!