gpt4 book ai didi

sql-server - 可以忽略 DbUpdateConcurrencyException 吗?

转载 作者:行者123 更新时间:2023-12-03 16:27:06 27 4
gpt4 key购买 nike

我有一个有效实现缓存的表 - 我们将内容放入,我们将内容取出。它有一个 last_accessed 字段,指示它何时被插入或读取,它有一个 max_age 字段,指示保留记录的时间。

我们想清除旧记录,而不是让它们累积。在我看来,处理这个问题的最简单方法就是在每次访问记录时调用清除例程。

这在 EF 中很简单:

var oldCacheItems =
this.xxDbContext.XXtokencaches.Where(
t => EntityFunctions.AddMinutes(t.lastAccessed, t.expirationMinutes) < DateTime.Now);

this.xxDbContext.XXtokencaches.RemoveRange(oldCacheItems);
this.xxDbContext.SaveChanges();

工作正常,一个人。但是当我有多个客户端运行时,我偶尔会得到 DbUpdateConcurrencyExceptions:

System.Data.Entity.Infrastructure.DbUpdateConcurrencyException was unhandled by user code
HResult=-2146233087
Message=Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
Source=EntityFramework

四处浏览,我看到很多关于 EF 中并发问题的讨论。但在这种情况下,我不确定这是否重要。本质上,这个特定错误是 EF 提示它无法删除记录,因为其他人已经删除了它们。

所以我正在考虑简单地捕获 DbUpdateConcurrencyException 并忽略它。

是否有任何我可能没有考虑到的可能后果?

或者一些可以消除问题的替代方法?

最佳答案

我认为这取决于您的业务逻辑。您可以假设数据库版本胜过您的版本。

关于sql-server - 可以忽略 DbUpdateConcurrencyException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372981/

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