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

时间:2015-08-20 04:26:12

标签: c# sql-server wpf concurrency transactions

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

P.S:我有角色&数据库中的用户表。有一些预定义的角色,每个用户都有一定的角色,具体取决于哪个用户可以控制对应用程序工作流程的访问。

1 个答案:

答案 0 :(得分:0)

并发请求,其中两个不同的用户尝试更新同一条数据(即数据库表中的一行)。我可以继续一点,但我找到了decent article on asp.net

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

您需要将列标识为时间戳列,或者首先使用代码中的属性,或者使用edmx文件。 (rowversion曾被称为时间戳)

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

你可以抓住这个并做出反应。