Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ado.Net连接中的值不能为null_C#_.net_Wpf - Fatal编程技术网

C# Ado.Net连接中的值不能为null

C# Ado.Net连接中的值不能为null,c#,.net,wpf,C#,.net,Wpf,我正在制作WPF。我制作了一个小应用程序,用户可以在其中添加和删除行。我使用了ADO.net连接。插入工作正常。但如果我删除任何一行,它会说:Value不能为null参数name:entity。为什么会这样,你能给我指点一下吗。以下是代码: try { myEntities dbContext = new myEntities(); if (grid.IsValidRowHandle(view.FocusedRowHandle)) { Name p =

我正在制作WPF。我制作了一个小应用程序,用户可以在其中添加和删除行。我使用了ADO.net连接。插入工作正常。但如果我删除任何一行,它会说:Value不能为null参数name:entity。为什么会这样,你能给我指点一下吗。以下是代码:

try
{
    myEntities dbContext = new myEntities();

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

        dbContext.SaveChanges();
    }

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

您可能需要执行以下操作

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

我假设问题就在这里:

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

似乎
grid.SelectedItem
为空,或者
grid.SelectedItem
不是
名称
。在调试器中运行它以查看实际类型。您是将网格绑定到名称集合还是从其属性创建匿名类型?

能否在
Name p=grid.SelectedItem as Name
并查看grid.SelectedItem是什么?我缺少一些帮助信息。您将什么绑定到列表(什么类型的对象)?我在这里看到的代码假设“网格”(我假设为DataGrid)有一个类型为“Name”的对象列表作为ItemSource。是吗?这不是(纯旧的)ADO.Net,这是实体框架,您忘了提到您正在使用DevExpress。@JFTxJ是的,您是对的。如果我删除任何单个值,错误:无法删除该对象,因为在ObjectStateManager中找不到它。这意味着什么?好吧,这将删除异常,但不会对数据库进行任何更改…我正在将网格绑定到一个名称集合,它的意思是:Name p=grid.SelectedItem as Name;此处的Name--Error 2 Embedded语句不能是声明或标记语句缺少括号或其他内容。编辑您的问题以匹配您现在的代码。
Name p = grid.SelectedItem as Name;
dbContext.Names.Remove(p);