对...
我有一个项目,由我杰出的前任留给我,其中的一部分似乎最初是使用 LINQ 的特性自动生成的。不幸的是,他并没有真正学习如何正确使用和配置 LINQ,而是似乎已经重命名了所有自动生成的文件,并在他认为适合进行更改的任何地方将它们销毁。
我不是为了抱怨(特别是)而提到这一点,而是为了提供上下文,例如,如果建议在设计器中配置代码的某些方面,则该代码的设计器不再存在,因为它已被删除.
无论如何,我有一个特定的功能,我相信它最初是设计师生成的,内容如下:
<System.Data.Linq.Mapping.DatabaseAttribute(Name:="ProductionControlMS")> _
Partial Public Class Database
Inherits System.Data.Linq.DataContext
<FunctionAttribute(Name:="dbo.ReleaseItemToProduction")> _
Public Function ReleaseBuildPack(<Parameter(Name:="TransitionID", DbType:="Int")> ByVal TransitionID As Integer, _
<Parameter(Name:="SubLevelID", DbType:="Int")> ByVal SubLevelID As Integer, _
<Parameter(Name:="CompNo", DbType:="TinyInt")> ByVal CompNo As Byte) As Integer
Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), TransitionID, SubLevelID, CompNo)
Return CType(result.ReturnValue, Integer)
End Function
我需要能够将此函数分配到事务中,因为我可能需要回滚它。不幸的是,虽然我可以打电话,但我ProductionControlMS.Connection.BeginTransaction
看不到如何将事务分配给当前命令。因此,当代码到达该Me.ExecuteMethodCall
行时,我会收到一个 InvalidOperationException,并显示以下消息:
当分配给命令的连接处于挂起的本地事务中时,ExecuteNonQuery 要求该命令具有事务。该命令的 Transaction 属性尚未初始化。
为了给它分配一个事务,让我能够回滚这些操作,我可以在这里获取什么?