Entity Framework を使用している間、 SQL OUTPUT 句を使用して、データベースのレコードの履歴を保持したいと考えています。これを実現するには、EF で DELETE ステートメントの次の例を生成する必要があります。
Delete From table1
output deleted.*, 'user name', getdate() into table1_hist
Where field = 1234;
テーブル table1_hist には table1 と同じ列があり、アクションを実行したユーザーの名前とそれがいつ発生したかを格納する 2 つの列が追加されています。ただし、EF にはこの SQL Server の句をサポートする方法がないように思われるため、それを実装する方法がわかりません。
EF のソース コードを調べたところ、DELETEコマンドは内部静的メソッド内で作成されている(GenerateDeleteSql in System.Data.Entity.SqlServer.SqlGen.DmlSqlGenerator class)
ため、クラスを拡張して必要な動作を追加することはできません。既存のコードに基づいて SQL Server プロバイダーを書き直す必要があるようですが、それは避けたいことです...
それで、私の質問は、これを行うための別のオプション (拡張機能など) があるかどうか、またはこのプロバイダーを書き直す必要があるかどうかです。
ありがとうございました。