顧客からは、すべてのデータ変更を、変更を加えた実際のユーザーとともにログ記録テーブルに記録する必要があります。"実際の"ユーザーIDをログに記録する必要があります。t-sqlでは、テーブルの挿入と更新ごとにトリガーを作成し、context_infoを使用してユーザーIDを格納することでこれを実現できます。ユーザーIDをストアドプロシージャに渡し、そのユーザーIDをcontextinfoに格納し、トリガはこの情報を使用してログ行をログテーブルに書き込むことができます。EFを使って似たようなことができる場所や方法が見つからない。そのため、主な目標は、EFを介してデータを変更した場合、正確なデータ変更を半自動でテーブルに記録することです(したがって、変更前にすべてのフィールドをチェックしたくはありません)。オブジェクトを保存します。EntitySQLを使用しています。2008で導入されたデータ変更キャプチャは選択肢にはなりません(ただし、これは正しい方法ではないかもしれません)。アイデア、リンク、または出発点はありますか。[編集]いくつかのメモ:ObjectContext.SavingChangesイベントハンドラを使うことで、contextinfoを初期化するためにSQL文を注入することができるポイントを得ることができます。EFと標準SQLを混在させることはできません。そのため、EntityConnectionを取得できますが、それを使用してT-SQLステートメントを実行することはできません。EntityConnectionの接続文字列を取得し、それに基づいてSqlConnectionを作成することもできますが、それは別の接続になるため、contextinfoはEFによる保存には影響しません。SavingChangesハンドラで次のことを試しました。"userinit";dcc.Parameters.Add(dp);dcc.ExecuteNonQuery();エラー:EntityCommand.CommandTextの値はStoredProcedureコマンドには無効です。EntityParameterではなくSqlParameterと同じです。SqlParameterは使用できません。cStr.ToString();dcc.ExecuteNonQuery();エラー:クエリ構文は無効です。FrameworkとADO.NETの間の橋渡しをするために立ち往生しています。うまく動くようになれば、概念実証を投稿します。Merge受け入れられた回答Contextの扱いはどうですか。私を正しい方向に向けてくれてありがとう。私の場合は、select文を実行するときにコンテキスト情報も設定する必要があります。これは、コンテキスト情報を使用してユーザーによる行レベルのセキュリティを制御するビューをクエリしているためです。私は、接続のStateChangedイベントにアタッチして、非オープンからオープンへの変更を監視するのが最も簡単であることに気付きました。その後、コンテキストを設定するprocを呼び出します。EFが接続をリセットすることを決定したとしても、それは毎回動作します。