0

多くのテーブル監査方法を認識しています。一部はトリガー ベースであり、各テーブルのトリガーを監査する必要があります。一部には、列のデータ型に基づく制限があります。NLog や Log4Net などのロギング フレームワークを使用するにはどうすればよいですか。ログ (テーブル内) で、「現時点で、このテーブルのこの列を val0 から val1 に更新したのは誰ですか?」という質問に答える必要があります。

ORマッパーはまだ決めていません。NHibernate または EF に傾いています。

前もって感謝します !

4

2 に答える 2

2

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

とにかく、非常に冗長になるため、DAOs パッケージ用の特別なアペンダーを追加することをお勧めします。

于 2009-06-03T22:30:57.887 に答える
1

ビクターの答えは一流ですが、列 - >オブジェクトのマッピングがどのように機能するかによっては、これが難しい場合があることを付け加えたいと思います。

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

また、これは間違っている可能性がありますが、ORM パッケージを介して切断されたエンティティを操作している場合、変更追跡情報が利用できるかどうかはわかりません。あなたがリストしたORMの1つがすべての列を更新していた場所について読んだ問題を漠然と覚えています。そのため、実際には単一の列を更新したときに、ユーザーがテーブル内のすべての列を変更したように見えました。

于 2009-06-03T22:43:31.637 に答える