【发布时间】:2013-09-20 16:29:07
【问题描述】:
想象一下,有一个程序,用C# 编写,其中有一个object (A) 引用了两组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 = TableA中的1行,它可以链接到TableB和TableC中的多行)
我想问的问题是,如果我想使用C# 来选择当前链接到object A 的B objects 和C objects(TableA 中的特定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