我正在使用Entity Framework,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中的数据加载到多个textBox中,更新按钮的事件处理程序如下所示:
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);
}
}
答案 0 :(得分:0)
将this.patient = patient添加到EditPatient构造函数