【问题标题】:MS SQL - reading multiple tables in C# atomicallyMS SQL - 以原子方式读取 C# 中的多个表
【发布时间】:2013-09-20 16:29:07
【问题描述】:

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

这些对象存储在MS SQL 中作为TableATableBTableC 中的行

在哪里

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 = TableA中的1行,它可以链接到TableBTableC中的多行)

我想问的问题是,如果我想使用C# 来选择当前链接到object AB objectsC objectsTableA 中的特定ID),该怎么做我使用SqlTransaction 以这样一种方式执行此操作,select 语句将检索准确的值?

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

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

【问题讨论】:

    标签: c# sql-server database transactions sqltransaction


    【解决方案1】:

    您可以设置SqlTransaction.IsolationLevel 以保证一致性。 SnapshotSerializable 应该可以工作,具体取决于您的用例。

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2019-01-27
      • 2013-06-28
      相关资源
      最近更新 更多