我正在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个以上的相关权利,因此这可能成为一个问题。
谢谢!