当我执行下面的代码时,我不会收到任何错误,但它不会更新数据库上的更改。我在表用户中有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吗? –