这是我的代码:
private void button1_Click(object sender, EventArgs e){
int index = dataGridView1.CurrentCell.RowIndex;
Model1.DevicesInfo_Tbl Device_Info_Obj = new Model1.DevicesInfo_Tbl();
Device_Info_Obj.DevicesName.Remove(index, index);
E_Shop_DB_Obj.SaveChanges();
dataGridView1.Refresh();
}
我无法理解代码错误的地方。到达Device_Info_Obj.DevicesName.Remove(index, index);
时编译器出错。我该如何解决?
我想删除数据库中的选定行。
答案 0 :(得分:2)
这个问题已经很模糊,但是你命名对象的方式并没有让它变得更好。
我假设E_Shop_DB_Obj是您的数据库上下文。您想要从表DevicesInfo_Tbl中删除一个对象。看起来,DevicesName是表格中的字段(字符串类型)。
您现在正在做的是从字段(字符串类型)Device_Info_Obj.DevicesName中删除字符。由于您创建了Device_Info_Obj,因此似乎DevicesName为null。这就是你得到NullReference异常的原因。
无论如何,要删除对象,您需要从上下文中删除对象:
using (var E_Shop_DB_Obj = new Model())
{
var item = E_Shop_DB_Obj.DevicesInfo_Tbl.FirstOrDefault(a => a.Id == index);
// Test if item is not null
E_Shop_DB_Obj.DevicesInfo_Tbl.Remove(item);
E_Shop_DB_Obj.SaveChanges();
}
答案 1 :(得分:1)
您必须首先找到具有键值的对象,然后才能将其删除
var item = E_Shop_DB_Obj.DevicesInfo_Tbl.Find(index);//ASSUMING index IS THE KEY
E_Shop_DB_Obj.DevicesInfo_Tbl.Remove(item);
E_Shop_DB_Obj.SaveChanges();