2009-06-03 12 views
0

私は、多くのテーブル監査方法を知っています。トリガーベースのものもあり、監査する各テーブルのトリガーが必要です。 SOmeには列データ型に基づく制限があります。 NLogやLog4Netなどのロギングフレームワークを使用するにはどうすればよいですか。私は自分のログ(テーブル内)が "このテーブルのこの列をval0からval1に今回更新しましたか?"という質問に答える必要があります。NLog/Log4Netを使用してデータベース変更の追跡を自動化する方法は?

ORマッパーをまだ決めていません。 NHibernateまたはEFへの傾斜。

ありがとうございます!

答えて

2

DAO(私はHibernateでJavaで正常に使用します)のようなパターンを使用すると、データベースの変更ごとにエントリを追加できます。 Spring.NETを使用する場合は、AOPを使用して、データベースにアクセスするDAOのメソッドにインターセプタを追加できます。

とにかく、DAOパッケージのために特別なアペンダーを追加したいと思うかもしれません。

+0

ポストシャープに傾いています..しかし、AOPは良い選択肢と思います – Perpetualcoder

1

ビクターの答えは一番ですが、私は、あなたの列 - >オブジェクトマッピングの仕方によっては難しいかもしれないと付け加えたいと思います。

テーブルの列をオブジェクトのプロパティと異なる名前のフィールドにマッピングすると、SQL情報を解析してどの列が更新されたかがわかります。たとえば、 "Product.Price"の値を変更した場合、実際には "final_price"という名前の列にマップされると、ログはデータベース内で発生しているものと正確に一致しません。

これも間違っている可能性がありますが、ORMパッケージを使用して接続されていないエンティティを使用している場合は、変更追跡情報を利用できるかどうかわかりません。私が覚えていた問題を覚えているのは、あなたが列挙したORMのどれかがすべての列を更新していたため、ユーザーが実際に列を1つ更新したときに表のすべての列を変更したようです。

関連する問題