首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XtraGrid + LINQ2SQL,处理数据库错误

XtraGrid + LINQ2SQL,处理数据库错误
EN

Stack Overflow用户
提问于 2013-10-31 08:40:32
回答 1查看 207关注 0票数 0

我正在使用带有LINQ2SQL的XtraGrid作为数据源,我遇到了一些问题。

有时,在数据库中发布更改时会发生数据验证错误(例如,在唯一索引冲突、触发器错误或FK不存在的情况下,或者您试图删除某人的父级等情况)。在这种情况下,我需要通知用户并使其能够更正数据或恢复行。

不幸的是,我找不到最好的地方来放置代码,并使其成为可能。在GridView.ValidateRow事件主体中,底层数据尚未更改( dataContext.SubmitChanges()调用也不会引起任何更改)。

GridView.RowUpdated事件看起来像是将更改保存到数据库的好地方,但我无法保持错误行的焦点(如果用户将焦点移到另一行而导致行更新,则焦点将在此事件处理程序完成后消失)。

在GridView中执行insert/update/delete操作时处理数据库错误的常见解决方案是什么?

EN

回答 1

Stack Overflow用户

发布于 2013-11-08 00:49:23

执行以下操作:

  • 处理视图RowUpdated事件;
  • 将SubmitChanges调用包装在try/catch块中;
  • 如果抛出任何异常,则相应地更新视图状态。

使用以下伪代码:

代码语言:javascript
复制
using DevExpress.XtraGrid.Views.Base;

void SomeViewHere_RowUpdated(object sender, RowObjectEventArgs e) {
  try {
  ...
    d.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
  }

  catch (Exception ex) {
  ...
    BeginInvoke(new Action(() => {
    //Handle GridControl.NewItemRowHandle State
    //Or
    //Maintain User Changes
    }));
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19696460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档