![](/img/trans.png)
[英]How to use TransactionScope in SQLCLR without escalation to MSDTC
[英]How to use TransactionScope class to use same connection without starting a transaction?
我有一個存儲過程A
,該存儲過程A
創建一個全局臨時表 (前綴##
),並在其中插入一些臨時數據。 然后,我有一個使用此數據的存儲過程B
因此,必須在同一會話(連接)中調用A
和B
否則臨時表將被刪除。
我的數據庫框架不斷使用如下構造:
public T GetSomeData()
{
using (var connection = OpenConnection())
{
// ...
}
}
現在,我需要確保在相同的連接上調用A
和B
我可以使用TransactionScope類輕松完成此操作,但這也意味着我不想要的事務。
using (var transaction = new TransactionScope())
{
A();
// Now B can read the temporary table created by A.
// However, a transaction has been started which causes problems!
B();
// I don't want a transaction...
// transaction.Complete();
}
我的問題是: 如何使用這種設計模式創建“連接范圍”?
使用相同的DataReader讀取多個結果集。
using(var reader = command.ExecuteReader())
{
while(reader.Read())
{
A();
}
reader.NextResult();
while(reader.Read())
{
B();
}
}
相同的連接用於獲取兩個結果集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.