gpt4 book ai didi

entity-framework - 如何安全地增加 Entity Framework 中的计数器

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

假设我有一个表来跟踪文件下载的次数,我通过 EF 将该表公开给我的代码。下载文件后,我想将计数更新一。起初,我是这样写的:

var fileRecord = (from r in context.Files where r.FileId == 3 select r).Single();
fileRecord.Count++;
context.SaveChanges();

但是当我检查由这些语句生成的实际 SQL 时,我注意到增量不是发生在 DB 端,而是发生在我的内存中。所以我的程序读取数据库中计数器的值(比如 2003),执行计算(新值是 2004),然后用新的 Count 值 2004 显式更新行。显然,从并发的角度来看,这并不安全.

我希望查询最终看起来像:
UPDATE Files SET Count = Count + 1 WHERE FileId=3

谁能建议我如何做到这一点?我不希望在读取之前锁定行,然后在更新之后解锁,因为我害怕阻止其他用户的读取(除非有某种方式锁定一行仅用于写入而不是块读取)。

我还查看了执行 Entity SQL 命令,但似乎 Entity SQL 不支持更新。

谢谢

最佳答案

当然欢迎您使用 EF 调用存储过程。使用您显示的 SQL 编写一个 sproc,然后在映射到所述 sproc 的 EF 模型中创建一个函数导入。

关于entity-framework - 如何安全地增加 Entity Framework 中的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268090/

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