未设置为对象实例的对象引用.(WPF Entityframework)
本文关键字:WPF Entityframework 对象引用 设置 对象 实例 | 更新日期: 2023-09-27 18:02:26
我是实体框架的新手。现在,我写一个带有按钮的删除函数。当我点击此按钮时,我的数据将被删除;但是,它会弹出"对象引用未设置为对象的实例"的警告。我想不出这个问题。
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
try
{
if (UserDataGrid.SelectedItems.Count == 0)
return;
if (UserDataGrid.SelectedItems.Count > 0)
if (MessageBox.Show("Would you want to delete?", "Yes", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
var selected = UserDataGrid.SelectedItem as User;
var index = selected.Index;
User user = new User();
user = ssEntities.User.Where(x => x.Index == index).First();
if (user != null)
{
ssEntities.User.DeleteObject(user);
ssEntities.SaveChanges();
}
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally { }
}
如果没有足够的信息,请告诉我补充。
考虑到你的评论,你应该这样做:
因为它看起来像你所有的try-catch
块写如下
try { }
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally { }
你完全不知道异常发生在哪里,因为你失去了整个StackTrace。你应该改变这种行为,因为这有很多问题。找到所有使用此模式的代码块,并将其更改为如下内容:
try { }
catch (Exception ex)
{
Debug.WriteLine(string.Format("An exception has occurred in <some function>: {0}'n{1}", ex.Message, ex));
MessageBox.Show(ex.Message);
}
finally { }
这样,您将能够在Debug窗口中看到更详细的输出,并且您应该能够通过检查StackTrace来定位确切的异常。当然,除了使用Debug.WriteLine
,您还可以使用另一种日志记录机制,如log4net
。