2

データベースに送信される前にコマンドを手動で変更できるようにする、Linq to SQL 内のどこかにフックはありますか?

具体的にはWITH CHANGE_TRACKING_CONTEXT(@contextData)、挿入/更新/削除がデータベースに適用されるたびに、変更を開始したユーザーなど、変更追跡に対して追加情報を追加できるようにするために、構文を導入しようとしています (これは、 SQL 認証を使用します)。

(@contextData)この構文は、追加のステートメントのデータを含む SqlCommand オブジェクトに追加される追加のパラメーターと共に、CommandText の先頭に挿入するだけで済みます。

前もって感謝します。

4

1 に答える 1

1

SQL を変更する必要はありません... DataContext に既存の SqlConnection を指定するだけです。 http://msdn.microsoft.com/en-us/library/bb386986.aspx

DataContext.SubmitChangesを介して変更を送信する前に、コマンド用に独自の SqlCommand を作成し (DataContext を作成したのと同じ SqlConnection を使用して)、WITH CHANGE_TRACKING_CONTEXTそれを実行します。そのステートメントは、データベース接続の間有効です。

更新: それが機能しなかったため、変更追跡を手動で行うことがオプションではない場合 (現在のアプリで行っているDataContext.GetChangeSetを介して)、最も醜いことをすることに行き詰まると思います可能なこと: DataContext の部分メソッドを使用して、すべての INSERT/UPDATE/DELETE の SQL ステートメントを指定します(最後のセクション)。またはさらに醜いことに、DataContext.Logを使用して、生成されたすべての SQL をログに記録し、Transaction で SubmitChanges を実行し、ロールバックしてから、ログから取得した SQL を変更して、必要に応じて実行します。

于 2009-11-23T22:18:37.970 に答える