繁体   English   中英

在EF 6.0中实施交易和并发访问

[英]Implement transactions and concurrent access in EF 6.0

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

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

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

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

您需要将该列标识为Timestamp列,或者首先在代码中或在edmx文件中使用该属性。 (rowversion以前称为时间戳记)

当并发冲突发生时,这将导致SaveChanges调用引发DbUpdateConcurrencyException

您可以捕捉到并做出所需的反应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM