Представьте себе, есть программа, написанная в C#
, в которой есть object (A)
, которая ссылается на 2 набора objects (set of B, set of C)
.MS SQL - чтение нескольких таблиц в C# atomically
Эти объекты хранятся в MS SQL
как строки в TableA
, TableB
, TableC
где
TableA has a field ID_Of_B referencing TableB as foreign key in a M:M relationship
TableC has a field ID_Of_A referencing TableA as foreign key in a M:1 relationship
(таким образом, один объект А = 1 строка в TableA
, и он может быть связан с несколькими строки в TableB
и TableC
)
вопрос, который я пытаюсь задать, если я хочу использовать C#
, чтобы выбрать текущий B objects
и C objects
, связанный с object A
(определенного ID в TableA
), как я могу использовать SqlTransaction
, чтобы сделать это так, чтобы оператор select получал точные значения?
Я пытался сделать это с 3-х различными операторами выбора (select from A)
, затем (select from B)
, затем (select from C)
, но в течение этих 3-х отдельных утверждений либо из 2-х таблиц могут иметь измененную информацию и набор результатов не может быть точным.
TLDR: как использовать c# SqlTransaction
, чтобы гарантировать выбор, который тянет несколько данных таблицы в соотношениях 1: M и M: M атомарным и точным образом (не позволяет другим операциям обновления/удаления в таблицах B и C влиять целостность набора результатов)