右...
私には、輝かしい前任者が残したプロジェクトがあります。その一部は、元々LINQの機能を使用して自動生成されたようです。残念ながら、LINQの適切な使用方法と構成方法を実際に学ぶ代わりに、彼は自動生成されたすべてのファイルの名前を変更し、変更を加えるのに適していると思われる場所でそれらを削除したようです。
私はこれを(具体的には)不平を言うために言及していませんが、たとえば、Designerでコードの一部の側面を構成するようにアドバイスされた場合、このコードの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プロパティが初期化されていません。
ここで、トランザクションを割り当てて、これらのアクションをロールバックできるようにするために、何を取得できますか?