说我具有连接到n
数据库Windows窗体应用程序,交易与n
连接同时打开。C#控制跨多个数据库
我在找的是一次性处理所有这些数据库。
例如如果我有2个数据库连接:
using (ITransaction tx1 = session1.OpenTransaction())
{
using (ITransaction tx2 = session2.OpenTransaction())
{
// Do the query thingy here
}
}
编写所有这些都是精在第一,但事情就当我想在这里和那里查询那种多余的,更不用说添加新连接的可能性。
我想什么是循环中的所有已注册的会话,并在服务包起来,大概是这样的:
class TransactionManager
{
private ISession[] _sessions;
public TransactionManager(string[] connectionStrings)
{
// Initialize the sessions here
}
public function DoTransaction(string query)
{
foreach (ISession session in _sessions)
{
// What to do here? Using? Try-catch?
}
}
}
如果我使用的foreach
循环使用,这将意味着,如果连接A成功但连接B不成功,则只有连接B会被回滚。
不能相信我刚刚才知道TransactionScope。我一直都在这个时间? –
此外,'TransactionScope'有一个可怕的习惯,即将多个连接升级到MSDTC,这种连接性能很糟糕。对此感到厌倦。 – Haney
您的'*'项目符号点是否也适用于给定示例,即完全不同类型*的多个数据库连接*? – Timo