【问题标题】:C# TransactionManagerC# 事务管理器
【发布时间】:2011-04-21 12:46:49
【问题描述】:

您好,我有一个生成器,它为我生成了一些由数据库结构化的自动化代码(创建所有 get、set 等),在这段代码中有一段代码如下:

SqlTransaction transaction = TransactionManager.GetTransaction();

我已经手动添加了引用并在文件开头导入了using System.Transactions;,因为代码生成器从未这样做过。导入后,这删除了我得到的TransactionManager error,但现在我在.GetTransaction(); 上收到一个错误,据我研究,TransactionManager 中没有这种方法。
有没有人知道应该用什么代替这段代码(生成器有一些代码由于错误而必须被替换,我猜这是其中一种情况......)。任何建议,将不胜感激!提前致谢!

【问题讨论】:

  • 您需要指定您使用的生成器。

标签: c# .net sqltransaction transactionmanager


【解决方案1】:

此答案假定您使用的生成器是内部构建的,并且您现在正在对其进行修改 - 如果它是外部代码生成器,那么您应该查看手册以了解您需要哪些参考。

System.Transactions 中的TransactionManager 类实际上并不为您创建或登记事务。它只是提供有关当前交易的信息。来自 MSDN:

这个类包含静态属性 以及用于获取信息的方法 关于默认交易选项。

相反,我认为你想要:

用谷歌搜索 TransactionManager 似乎人们通常用这个名称编写自己的类,这些类执行诸如提供 GetTransaction() 方法之类的操作 - 这可能是生成器具有此名称的原因吗?

【讨论】:

  • 这是一个内部应用程序,但不是由我的项目团队制作的,已交给我们使用,但创建者现在正在休假,没有手册。我们并没有尝试使用实际的生成器,我们只需要使用它来简化为数据库创建所有数据类型的过程。
  • @Lord-Link 在这种情况下,我认为您需要找到生成器中的 TransactionManger 所在的命名空间,并将其包括在内,因为它不是 System.Transactions 中的 TransactionManager
【解决方案2】:

只添加一些 Transaction 命名空间应该没有帮助。您可能需要生成器附带的一些基本 DLL 或代码文件。阅读手册。

【讨论】:

    【解决方案3】:

    您通常通过在当前连接上调用 BeginTransaction() 来启动 SqlTransaction。看起来您的“生成器”使用了一些它生成或随它一起交付的 TransactionManager 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2010-09-09
      • 2013-03-27
      相关资源
      最近更新 更多