0

想象一下,有一个用 编写的程序,C#其中有一个object (A)引用 2 组的objects ( set of B, set of C).

这些对象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

(因此,单个对象 A = 1 中的行TableA,它可以链接到TableB和中的多行TableC

我想问的问题是,如果我想用来C#选择当前B objectsC objects链接到object A(特定 ID 中的TableA),我该如何使用SqlTransactionselect 语句将检索的值准确的?

我尝试使用 3 个不同的选择语句(select from A),然后(select from B),然后(select from C),但在这 3 个选择语句中,两个表中的任何一个都可能更改了信息,结果集可能不准确。

TLDR:如何使用c# SqlTransaction来保证一个select以原子和准确的方式以1:M和M:M关系拉取多个表数据(不让表B和C中的其他同时更新/删除语句影响结果的完整性放)

4

1 回答 1

0

您可以设置SqlTransaction.IsolationLevel以保证一致性。要么 要么Snapshot应该Serializable工作,完全取决于您的用例。

于 2013-09-20T17:01:14.460 回答