如何在c#中删除数据库中的记录

时间:2017-02-09 20:24:04

标签: c# .net

这是我的代码:

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);时编译器出错。我该如何解决? 我想删除数据库中的选定行。

2 个答案:

答案 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();