2010-11-26 106 views
0

如何使用企业库来处理范围内的事务。我有3个存储过程,我需要在一个范围内执行。我不想使用System.Transaction名称空间企业库中的事务

+1

好的问题必须被问...... *为什么*你不想使用`System.Transactions`命名空间? – 2010-11-26 10:33:32

回答

0

您可以调用连接对象上的BeginTransaction方法来获取DbTransaction对象。然后使用带有DbTransaction的Entlib数据库对象的重载。然而,这是一个巨大的痛苦管理。您需要手动创建和关闭至少一个连接,而不是依赖Entlib来做正确的事情,并且必须将DbTransaction对象传递给需要它的所有事物。

TransactionScope在这里确实是正确的答案。如果你有一些阻碍情况真的阻止你使用它,这不是一些脑死的公司政策,我很想知道它是什么。

+0

只是想到了另一种选择。如果它总是以相同顺序存在三个sprocs,那么只需创建第三个sproc,以正确的顺序为你调用它们,然后在数据库服务器中完全管理事务;新的sproc会做“Begin Trans exec sproc1 exec sproc exec sproc3 Commit Trans”或类似的东西(我的sql不是很好)。 – 2010-11-27 04:09:58