在多个表的单个保存中处理Entity Framwork中的并发性。行

时间:2016-03-11 11:57:22

标签: entity-framework concurrency

我正在EF6中实现并发处理。到目前为止,我添加了RowVersion字段,一切都很顺利。让我们说我有一个RoleName和RoleId的Role表。如果有人在我点击SAVE之前更改了名称,应用程序将检测到更改并相应地继续。凉。

现在......让我们说我也有一个RolePrivilege表,其中包含与每个角色关联的权限列表。角色信息(名称)和权限列表都会发送到客户端,然后在保存时(在SaveChanges中)保存所有内容。

问题是......在这种情况下我们应该如何构建并发检查?

  • 检查Role实体上的RowVersion是不够的。 RolePrivileges可能会有变化。

  • 检查RolePrivileges实体上的RowVersion是不够的。可能会添加或删除权限,而不仅仅是更新。

所以,它看起来需要大量的自定义编码和管道......

1)在保存之前检查角色是否已被删除。 2)检查Role.RowVersion是否已被更改。 3)检查与DB版本相比是否删除了任何权限。 4)与DB版本相比,检查是否添加了任何权限。 5)检查是否有任何权限具有不同的RowVersion。

关于如何处理这种情况的任何想法,尽可能通用和干净? Role / RolePrivileges是一个真实的案例,但很简单。我们确实有一个屏幕,我们在一次交易中保存10个以上的相关权利,因此这可能成为一个问题。

谢谢!

0 个答案:

没有答案