gpt4 book ai didi

.net - 使用 LINQ to SQL 更新数据库?

转载 作者:行者123 更新时间:2023-12-04 06:13:11 24 4
gpt4 key购买 nike

当我执行以下代码时,我没有收到任何错误,但它也不会更新数据库上的更改。我在表 user 中有 5 个条目,在执行以下代码后,数据库中没有处于“事件”状态的用户。

我应该自己编写更新语句还是它为我做?这里可能有什么问题?

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]

最佳答案

您需要更改 DBML 上的并发模式。本网站关于Updating LINQ-to-SQL entities解释一下。

您不想包含在 WHERE 中的任何内容条款应该有他们的Update Check设置为 Never在 DBML 上。

  • 打开 DBML
  • 选择 state您的属性(property)user对象
  • 按 F4(查看属性)
  • 更改 Update Check (属性中的最后一个设置)到 Never
  • 保存并重试

  • 通常我会关闭 Update Check对于所有列,但您应该多阅读以了解它在需要并发的情况下是如何工作的。

    关于.net - 使用 LINQ to SQL 更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550032/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com