0

我正在研究 WPF。我制作了一个小应用程序,用户可以在其中添加和删除行。我使用 ADO.net 连接。插入工作正常。但是如果我删除任何行,它会说:值不能为空参数名称:实体。为什么会这样,请您指导我。这是代码:

try
{
    myEntities dbContext = new myEntities();

    if (grid.IsValidRowHandle(view.FocusedRowHandle))
    {
        Name p = grid.SelectedItem as Name;
        dbContext.Names.Remove(p);

        dbContext.SaveChanges();
    }

在此处输入图像描述

4

2 回答 2

2

我假设问题在这里:

Name p = grid.SelectedItem as Name;
dbContext.Names.Remove(p);

看起来要么grid.SelectedItem是 null 要么grid.SelectedItem不是Name. 在调试器中运行它以查看真正的类型。您是将网格绑定到名称集合还是从它们的属性创建匿名类型?

于 2013-08-12T16:08:24.523 回答
0
Name p = grid.SelectedItem as Name;
if(p!=null) // check null before remove
{
    dbContext.Names.Remove(p);
    dbContext.SaveChanges();
}

如果你得到 null 值p,你需要找到原因。调试并检查您获得的值SelectedItem,也可以将其转换为Name?

您可能需要执行以下操作

var name = dbContext.Names.FirstOrDefault(x=>x.SomeProperty == grid.DataKeys[grid.SelectedIndex].Value);
dbContext.Names.Remove(name);
dbContext.SaveChanges();
于 2013-08-12T16:07:22.540 回答