我通過我的傑出的前任,這似乎有LINQ的最初是自動生成的使用功能,其中部分有一個項目,留給我的。不幸的是,他並沒有真正學習如何正確使用和配置LINQ,而是似乎已經將所有自動生成的文件重命名並在任何他認爲合適的地方進行修改。
我沒有提到這是爲了(特別是)抱怨,而是爲了提供上下文,例如,如果建議在Designer中配置代碼的某個方面,則此代碼的設計器不再存在,因爲它被撕掉了。
無論如何,我有一個特別的功能,我相信最初設計器生成的,其內容如下:
<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屬性尚未初始化。
在這裏,爲了給它分配一個事務,允許我回滾這些操作,我能得到什麼?