2012-04-22 106 views
0

我正在使用ADO.NET並嘗試更新SQL Server 2008數據庫中表中的列值。但是,該值不會更新。儘管它在C#代碼中進行調試時會更新。這裏是我的代碼:ADO.NET更新SQL Server 2008中的表

using (ADONETClass context = new ADONETClass()) 
{ 
    List<Invoices> list = context.Invoices.ToList<Invoices>(); 
    foreach (Invoices b in list) 
    { 
     b.status = 0; 
    } 
} 

現在我調試的代碼,看到context.Invoices.ToList<Invoices>()[0].status確實設置爲零。但是當程序運行完畢後,我打開SQL Server Management Studio,狀態值仍然爲0.不知道發生了什麼?我錯過了什麼嗎?

感謝

Varun的

+0

如果您使用實體框架,你爲什麼要紀念這個爲ADO 。淨?經典的ado.net看起來很不一樣,你需要一個不同的解決方案。那是什麼? Ado.net或EF? – walther 2012-04-22 22:21:34

+0

噢好吧,不知道!我今天寫了第一個節目。我的C#項目包含一個文件Model1.edmx,它是ADO .NET實體數據模型。所以我認爲這是ADO .NET – VVV 2012-04-22 22:24:20

+0

EF是在ado.net之上的ORM。使用ado.net本身,您需要編寫實際的SQL查詢,管理連接等。使用EF(以及類似的ORM),您將專注於邏輯部分 - 獲取結果,管理關係......,而隱藏較低級別的內容從你大部分時間。 – walther 2012-04-22 22:34:32

回答

2

你打電話context.SaveChanges()?

+0

不對不起,我不會打電話那樣的。我會嘗試一下,看看會發生什麼! – VVV 2012-04-22 22:18:30

+0

謝謝。這工作並解決了我的問題。順便說一下,我可以從哪裏得到這類信息?書籍/ MSDN等?感謝您的幫助。 – VVV 2012-04-22 22:20:23

+0

@VVV,精確+視頻教程等......但最重要的是 - 谷歌。每個程序員都有無窮無盡的好東西;) – walther 2012-04-22 22:22:47

1

您使用的是實體框架嗎? 我認爲你缺少context.SaveChanges 電話在的EntityFramework的變化都只是在內存中,並沒有寫入到數據庫中,直到你調用的SaveChanges

+0

是的,我已經添加了它,現在它工作正常。謝謝。 – VVV 2012-04-22 22:21:05