2008-10-15 51 views
21

是否有任何這樣的原因不會工作?LINQ不更新上.SubmitChanges()

這是邏輯我已經使用了多次更新與LINQ在表中的記錄:

DataClasses1DataContext db = new DataClasses1DataContext(); 
User updateUser = db.Users.Single(e => e.user == user); 
updateUser.InUse = !updateUser.InUse; 
db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true }; 
db.SubmitChanges(); 

(updateUser.InUse是位字段)出於某種原因,它不是加工。當我檢查linq.log時,它是完全空白的。

難道我的.dbml會出現問題嗎?其他表似乎工作正常,但我已經比較了.dbml中的屬性,它們都匹配。

就好像db.SubmitChanges();沒有檢測到任何需要的更新。

+1

享受`submitchanges`的分類學家:P – DJTripleThreat 2011-02-05 02:50:58

回答

66

該表無法正確更新,因爲它沒有主鍵。 (其實它有列,但約束沒有複製時,我做了一個SELECT INTO我的開發表)。 DataContext類需要更新的主鍵。

2

就LINQ而言,InUse屬性是「正常」屬性嗎? (例如它不是自動生成的或任何類似的東西?)

或者,我不認爲它是可空的< bool>是,它的當前值爲null?如果是這樣,你的更新行實際上並沒有做任何事情 - 對於可空布爾值,!null = null。

+0

updateUser.InUse =!updateUser.InUse; 不是問題所在。它不是可以空的,我已經嘗試了硬編碼錯誤和真實。 它不是自動生成的。 – ctrlShiftBryan 2008-10-15 22:43:05

+0

如果更改其他字段,它會更新嗎? – 2008-10-15 22:58:15

相關問題