值Ado.Net连接中的值不能为空

时间:2013-08-12 16:03:47

标签: c# .net wpf

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

try
{
    myEntities dbContext = new myEntities();

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

        dbContext.SaveChanges();
    }

enter image description here

2 个答案:

答案 0 :(得分:2)

我假设问题在这里:

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

似乎grid.SelectedItem为空或grid.SelectedItem不是Name。在调试器中运行它以查看类型的真实情况。您是将网格绑定到一组名称还是从其属性创建匿名类型?

答案 1 :(得分:0)

Name p = grid.SelectedItem as Name;
if(p!=null) // check null before remove
{
    dbContext.Names.Remove(p);
    dbContext.SaveChanges();
}

如果您将空值设为p,则需要找到原因。调试并检查SelectedItem获得的值,还可以转换为Name

您可能需要执行以下操作

var name = dbContext.Names.FirstOrDefault(x=>x.SomeProperty == grid.DataKeys[grid.SelectedIndex].Value);
dbContext.Names.Remove(name);
dbContext.SaveChanges();