2017-02-09 54 views
1

從數據庫中記錄這是我的代碼:如何刪除在C#

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

什麼是錯誤? – Forklift

+0

@叉車在Project1.exe中發生未處理的類型爲「System.NullReferenceException」的異常 附加信息:對象引用未設置爲對象的實例。 –

+0

在您的DevicesInfoObj構造函數中,您需要實例化DevicesName。無論是那個還是你的DeviceInfoObj對象都是空的。調試應該告訴你哪個是問題。 – Forklift

回答

2

這個問題已經很模糊了,但是你指定對象的方式並沒有讓它變得更好。

我假設E_Shop_DB_Obj是你的數據庫上下文。你想從表DevicesInfo_Tbl中刪除一個對象。它看起來像DevicesName是你的表中的字段(字符串類型)。

你現在正在做的是從字段(字符串類型)中刪除字符Device_Info_Obj.DevicesName。由於您創建了Device_Info_Obj,因此DevicesName爲空。這就是爲什麼你得到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(); 
     } 
0

你必須先找到一個鍵值的對象,然後你可以將其刪除

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(); 
+0

當我重新打開項目,我刪除回來的項目。 –

+0

此代碼不會從數據庫中刪除記錄。 –

+0

如果您不能提供其他代碼段,則無法提供更多幫助。 – Hemal