多くのユーザーが使用する商用アプリを作成しています。ユーザーはログインする必要があり、そこでシステムはアクセスできるフォームを取得します。
今、私は彼が行うすべての行動を記録する必要があります. すべてのアクションとは、エンティティで行われるすべての AMD (追加 - 変更 - 削除) を意味します。また、彼が変更/追加/削除したフィールドとその値をログに記録したいと思います。(念のため、エンティティ フレームワーク 4 を使用しています)
バージョン管理に似た実装を考えていました。
私がこれを行うことだと思ったのは:
ユーザーがいくつかの重要なエンティティで AMD を実行するたびに、ログ エントリを追加します。そのログ エントリには、保存しているエンティティのタイプに関連する id_entity_type があります。(例: クライアント、ローン、銀行など)。すべてのタイプは Entity_type に保存されます。正しいエンティティを探すために、どの種類のエンティティを使用しているかを C# で確認する必要があります。id_entity は、そのエンティティの ID です。id_action_type は、ユーザーが行ったアクションの種類です (例: "CREATE" / "UPDATE / "DELETE") id_user はユーザーに関連しています.
値は、その時点でのエンティティのすべてのフィールドと値を含むテキストです。次に例を示します。
エンティティ クライアント:
- 名前:ジョン
- 姓 : ドウ
- 住所:Oak st 123
- 都市 : ブエノスアイレス
- 国 : アルゼンチン
次に、別のログ エントリで、別のユーザーが国を USA に更新します。
- 名前:ジョン
- 姓 : ドウ
- 住所:Oak st 123
- 都市 : ブエノスアイレス
- 国:アメリカ
次に、ユーザーがエンティティの変更を確認したい場合、TextDiff (バージョン コントローラーに似ています) を通じてエンティティの経時的な変更を確認できます。
これがこれを達成するための良い方法であるかどうか、アドバイスをもらいたいです。
データベースのトリガーを使用してこのログを保存できることを知っています。私はこれについてほとんど知りませんが、私が持っているすべてのエンティティに対してログ テーブルが必要になると思います。
誰かがこれを行う良い方法を知っていれば、私は素晴らしいでしょう。