DotNet Core中包含OptimisticConcurrencyException的NuGet包是哪个?

5

我正在将代码迁移到DotNet Core。我需要解决对OptimisticConcurrencyException的引用。我需要加载哪个NuGet包?


你正在从哪个目标进行迁移?它以前在哪里?看起来你期望在Entity Framework Core中找到一个Entity Framework类,但它已经不存在了。 - Camilo Terevinto
什么?我正在从.NET 4.6.2迁移到.NET Core 2.1。如果.NET Core 2.1不再要求我捕获OptimisticConcurrencyExceptionDbUpdateConcurrencyException,请在我的问题答案中告诉我。 (如果有一些合理官方的文档说'OptimisticConcurrencyException'在.NET Core中已经不存在,那就更好了。) - Bob.at.Indigo.Health
有趣的是,这个问题被踩了,但回答却吸引了赞... - Bob.at.Indigo.Health
1个回答

5
如果您正在迁移到 EF Core,则最接近的是 DbUpdateConcurrencyException
处理并发冲突的一般方法如下:
1. 在 SaveChanges 过程中捕获 DbUpdateConcurrencyException
2. 使用 DbUpdateConcurrencyException.Entries 为受影响的实体准备新的更改集。
3. 刷新并发令牌的原始值,以反映数据库中的当前值。
4. 重试该过程,直到不再发生冲突。
来源:https://learn.microsoft.com/en-us/ef/core/saving/concurrency 编辑: OptimisticConcurrencyExceptionSystem.Data.Entity.Core 命名空间中,它是 EntityFramework(EF6)库的一部分。

EF Core是实体框架库的完全重写,因此很可能OptimisticConcurrencyException从未进入EF Core。

还有this thread建议在EF6中捕获DbUpdateConcurrencyException。还指出,在EF6中的两个异常只会增加混乱。因此,EF Core团队可能决定只实现其中一个。

如果仍然有疑问,请在EF Core github存储库中创建问题。他们乐于回答问题,并且这可能对具有相同问题的其他用户也有所帮助。 :)


谢谢!是的,同时拥有这两个异常确实让人感到困惑。各种文档和示例有时只提到其中一个作为需要捕获的唯一异常。从我的代码中,我知道有时我会捕获一个异常,有时我会捕获另一个异常。我选择了始终捕获这两个等效的异常。我很乐意简化我的代码,并删除在我的代码中冗长的catch (Exception e) when (e is OptimisticConcurrencyException || e is DbUpdateConcurrencyException) - Bob.at.Indigo.Health

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接