Мой вопрос носит концептуальный характер.
Давайте предположим, что мы используем ORM (например, Entity Framework, Hibernate, ...) и моделируем наши доменные объекты в этих ORM. Поскольку ORM будет абстрагировать большинство транзакций SQL / do для нас, как мы можем быть уверены, что наши транзакции будут согласованными?
Пример: у нас есть интернет-магазин, который продает книги. Если мы продаем книгу, мы в основном использовали бы что-то похожее на это:
var book = books.Single(b => b.Id == 42);
book.Quantity -= 1;
books.SaveChanges();
Но если я правильно понял ORM, они будут только оборачивать изменение книги в запросе UPDATE. Это означает, что вы можете получить основные проблемы параллелизма, такие как: проблема параллелизма с ормами
Если вы будете использовать SQL, вы просто заключите в транзакцию .Quantity - = 1 и будете в безопасности.
Как бы вы обычно справлялись с этим надлежащим образом в ORM, или это обрабатывается как-то автоматически?