當我執行下面的代碼時,我不會收到任何錯誤,但它不會更新數據庫上的更改。我在表用戶中有5個條目,執行以下代碼後,數據庫中沒有「活動」狀態的用戶。使用LINQ to SQL來更新數據庫?
我應該自己寫更新聲明還是爲我做?這裏有什麼問題?
var dbContext = new DataClasses1DataContext();
List<user> users = (from u in dbContext.users
where u.age < 30
select u).ToList();
users[0].state = "Active";
dbContext.SubmitChanges();
編輯:
所以我知道是什麼問題。 我更改我的對象上的狀態,並更新語句包含作爲where子句的狀態。 所以當執行查詢時,它找不到匹配的項目 - 它在[state] = @p4
上失敗。
爲什麼當我有主鍵時,在更新語句中使用所有參數?
UPDATE [dbo].[user]
SET [state] = @p5
WHERE ([id] = @p0) AND ([firstName] = @p1) AND ([lastName] = @p2)
AND ([age] = @p3) AND ([state] = @p4)
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [1]
-- @p1: Input NChar (Size = 10; Prec = 0; Scale = 0) [firstName ]
-- @p2: Input NChar (Size = 10; Prec = 0; Scale = 0) [lastName ]
-- @p3: Input Int (Size = -1; Prec = 0; Scale = 0) [25]
-- @p4: Input NChar (Size = 10; Prec = 0; Scale = 0) [Active ]
-- @p5: Input NChar (Size = 10; Prec = 0; Scale = 0) [Active]
這樣看起來好吧,你確定你的物品是年齡<30嗎? – Raymund
是的,我從該查詢中取回3個項目 – aryaxt
我測試了您的代碼段,它適用於我。您向我們展示的代碼之外有一些內容會導致問題。你能發佈一個完整的DDL SQL嗎? –