2010-07-25 70 views
1

我不知道這段代碼有什麼問題,這段代碼編譯成功但沒有更新數據庫。我想念一些事情嗎?SubmitChanges()不起作用

DataClassesDataContext db = new DataClassesDataContext(); 
var query = from p in db.AllPatiences 
      select p; 
int newID = 1001; 
foreach (AllPatience patient in query) 
{ 
    patient.Id = newID.ToString(); 
    newID++; 
} 
db.SubmitChanges(); 
+0

一定是你的設置奇怪 - 作品像我的魅力。代碼看起來很好 - 我認爲你的代碼不是問題。 – 2010-07-25 10:20:01

回答

2

我發現問題,對於像那樣的更新,有必要有主鍵。我的表沒有主鍵的原因是:我從Excel文件導入這些數據,所以我沒有主鍵。

1

猜,是「Id」你的表主鍵?如果是這樣,我不認爲L2S支持更新主鍵(在我看來,這是非常正確的)。你應該永遠不要去改變主鍵的值。

如果Id不是您的主鍵,我不知道:-P。

+0

不,這不是我的主鍵,另外沒有錯誤 – Mostafa 2010-07-25 09:08:05

3

我的猜測是你正在使用基於文件的數據庫(.mdf)在你的項目中,而你正在試圖查看該數據庫中的表數據。當您構建項目時,數據庫將被克隆到bin/debug /或bin/release /目錄中,您的正在運行的程序將訪問它。如果你看看這個版本的文件,而不是你已經加載到你的VS項目中的那個,你應該看到更改。

如果是這種情況,則應該將數據庫文件屬性設置爲「僅在更新時複製」或「不復制」,以避免克隆每個構建的數據庫。

+0

不幸的是你錯了:(我沒有使用基於文件的數據庫。 – Mostafa 2010-07-25 14:03:25

2

是耐心等待。是否在數據庫本身生成?可能是一個SQL IDENTITY字段? 另外,檢查dbml文件中字段的SyncOn屬性。