EF中的条件更新

时间:2011-05-30 10:32:39

标签: entity-framework validation entity-framework-4.1

我有1对多的关系,想要检查更新范围内的业务规则。 例如,有以下情况: 第一个表包含组,第二个表包含学生。此外,我们的系统中还有一条商业规则:“一个团队不能包含超过10名学生”。 我们需要检查更新或事务范围内的规则,因为代码中的预验证不能保证规则的实现。

是否可以在没有自定义脚本的情况下使用WHERE条件进行UPDATE? 在EF中进行此类验证的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

不能将这种WHERE条件包含在EF中的UPDATE语句中。此外,这是典型的业务规则验证,它在数据库层中略微超出范围。您应该构建一种机制,只允许单个客户端修改组。客户端将加载一个组(= lock)更改学生数并尝试保存该组。由于该组仅由单个客户端锁定,因此没有其他人可以修改内容,您可以在保存组并释放锁之前自由检查学生数。创建此类锁定机制的最简单方法是添加LockedBy和LockedDate列。为了避免无限制的锁定,您可能会遇到一些条件,即锁定较旧,然后X被视为已过期。