【问题标题】:Update record with Entity Framework generating an Exception使用生成异常的实体框架更新记录
【发布时间】:2015-08-20 21:04:32
【问题描述】:

我正在使用实体框架、WPF、C# 和本地 sql-server 数据库(两个表:Patient 和 MedicalSheet)开发应用程序。在更新记录时,我有一个异常说:

EntityFramework.dll 中出现“System.Data.Entity.Infrastructure.DbUpdateConcurrencyException”类型的第一次机会异常

附加信息:存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。有关理解和处理乐观并发异常的信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=472540

我的 DAL 代码如下所示:

 public static void UpdatePatient(Patient patient)
    {

        using (context ctx = new context())
        {
            ctx.Entry(patient).State = EntityState.Modified;
            ctx.SaveChanges();
        }
    }

我在dataGrid中的每一行都有一个更新按钮,一旦点击它,它就会实例化一个新窗口,将dataGrid中的数据加载到多个文本框中,更新按钮的事件处理程序如下所示:

private void EditInDatagrid_btn(object sender, RoutedEventArgs e)
    {
        new ModernDialog
        {                 
            Title = "Update patient DataGrid",
            Content = new EditPatient((Patient)patientGrid.SelectedItem){
            Width = 600,
            Height = 400
            },
        }.ShowDialog();
    }

新更新窗口的UserControl(点击更新按钮后弹出)代码如下:

 public partial class EditPatient : UserControl
{
    Patient patient = new Patient();

    public EditPatient(Patient patient)
    {
        InitializeComponent();

        fNameBoxEditing.Text = patient.firstName;
        lNomBoxEditing.Text = patient.lastName;
             .....

    }


    private void ValiderEditing_btn(object sender, RoutedEventArgs e)
    {

        patient.firstName = PrenomBoxEditing.Text;
        patient.lastName = NomBoxEditing.Text;


        PatientDAL.UpdatePatient(patient);

        MessageBoxButton btn = MessageBoxButton.OK;
        ModernDialog.ShowMessage("Patient infos modified succeeded!", "", btn);

    }

}

【问题讨论】:

  • 我怀疑问题可能是您在尝试保存患者时没有正确的患者 ID。能否在 UpdatePatient 方法中使用断点检查患者 ID?
  • 感谢您花时间回答,我刚刚检查了 Id = 0;
  • Gert Arnold :我确实展示了 UpdatePatient 方法代码,Edit Patient 中的上下文只是测试一个 LINQ 查询,但我现在从问题中删除了它

标签: c# sql-server wpf entity-framework datagrid


【解决方案1】:

将 this.patient = patient 添加到 EditPatient 构造函数中

【讨论】:

  • 兄弟,谢谢,我一直在努力寻找解决方案,它非常有效,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
相关资源
最近更新 更多