在EF 6.0中实现事务和并发访问

本文关键字:事务 并发 访问 实现 EF | 更新日期: 2023-09-27 18:08:54

我有一个工作的WPF应用程序,使用EF 6.0连接到MS SQL Server数据库。我将此应用程序从独立移动到网络,其中不同的用户将对应用程序具有不同的权限。有些只能生成报告(只读访问),有些可以编辑/更新/删除数据,有些可以从excel文件中导入数据(excel文件中的大量数据)。因此,我认为我需要管理应用程序中的事务,以便多个用户在访问相同数据时不会出现并发性问题。如何管理这里的事务和并发性?

p。S:我有一个角色。数据库中的Users表。有一些预定义的角色,每个用户都有一个特定的角色,基于哪个用户可以控制对应用程序工作流的访问。

在EF 6.0中实现事务和并发访问

并发请求,其中两个不同的用户尝试更新相同的数据块(即数据库表中的一行)。我可以继续写,但是我找到了一篇关于asp.net的不错的文章。

简短的版本是,您需要在表上有一个rowversion列。这是数据库在每次更新时自动增加的列。

您需要首先在代码或edmx文件中使用属性将列标识为Timestamp列。(rowversion过去被称为时间戳)

这将导致SaveChanges调用在并发冲突发生时抛出DbUpdateConcurrencyException。

你可以抓住它,并根据需要做出反应。