Я работаю над своим первым крупным проектом, использующим EF4, и размышлял над ситуациями параллелизма, поскольку я реализую определенные бизнес-сценарии. Я понимаю, что EF имеет встроенную поддержку оптимистичного параллелизма, установив режим параллелизма в значение Fixed для свойств объекта. Это кажется достаточным в большинстве случаев. Несколько вещей, которые меня интересуют:
В ситуации, когда я сначала проверяю, что объект не существует, а затем вставляю объект. Технически, кто-то мог вставить эту сущность за долю секунды между моей проверкой и моей вставкой. Какова лучшая практика для обработки этого сценария с EF? Естественно, я думаю о двух возможных решениях: пессимистическом параллелизме или обработке уникального исключения ограничения, которое произойдет.
Я пытаюсь вспомнить, приведет ли автоматическая блокировка задействованных таблиц к выдаче блока «Начать транзакцию / принятие транзакции в SQL», то есть это приведет к пессимистическому сценарию, о котором я говорил выше. Если это так, будет ли перенос этих двух операций EF в TransactionScope достигать аналогичных результатов?
Если TransactionScope не будет вызывать пессимистический параллелизм, что будет?