我正在研究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();
}
答案 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();