Условное ОБНОВЛЕНИЕ в EF - PullRequest
1 голос
/ 30 мая 2011

У меня есть отношение 1 ко многим, и я хочу проверить бизнес-правила в области обновления.Например, есть следующая ситуация: первая таблица содержит группы, а вторая содержит студентов.Также в нашей системе есть бизнес-правило, которое гласит: «группа не может содержать более 10 студентов».Нам необходимо проверить правило в области обновления или транзакции, поскольку предварительная проверка в коде не гарантирует выполнение правила.

Можно ли выполнить ОБНОВЛЕНИЕ с условием WHERE без пользовательских сценариев в EF?Каков наилучший способ сделать такую ​​проверку в EF?

1 Ответ

1 голос
/ 30 мая 2011

Нет, вы не можете включить такое условие WHERE в операторы UPDATE в EF. Более того, это типичная проверка бизнес-правил, которая немного выходит за рамки на уровне базы данных. Вы должны создать механизм, который позволит только одному клиенту изменять группу. Клиент загрузит группу (= блокировка), изменит количество учеников и попытается сохранить группу. Поскольку группа блокируется только одним клиентом, никто другой не может изменить содержимое, и вы можете свободно проверить количество учеников, прежде чем сохранить группу и снять блокировку. Самый простой способ создать такой механизм блокировки - это добавить столбцы LockedBy и LockedDate. Чтобы избежать неограниченной блокировки, у вас может быть условие, что блокировки старше X считаются просроченными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...