2

wpf アプリケーションのフォームのグループにデータ コンテキスト オブジェクトを使用しており、いくつかのコントロールをテーブルのいくつかの子テーブルにバインドしています。データ コンテキストがいつデータベースにアクセスしたかを正確に追跡したいと考えています。これを達成する最も簡単な方法は何ですか?

4

1 に答える 1

5

DataContext.Log次のプロパティを使用します。

db.Log = Console.Out;

dbあなたの はどこですかDataContext。の複数のインスタンスを構築する場合は、コンストラクター内DataContextで を設定して、それらがすべて適切にログに記録されるようにします。LogDataContext

このチュートリアルに示すように、この手法を使用して、ファイル、メモリ、またはデバッグ ウィンドウにログを記録できます。カスタムTextWriter派生を定義するDateTime.Nowと、データベースがアクセスされるたびに、関連する SQL ステートメントと共に現在を出力できます。

の拡張子は次のTextWriterようになります。

class LoggingTextWriter : TextWriter 
{
    private const string LogFilePath = @"C:\your_log_file.txt";

    public override void Write(char[] buffer, int index, int count) 
    {
        Write(new String(buffer, index, count));
    }

    public override void Write(string value) 
    {
        File.AppendAllText(LogFilePath, DateTime.Now + value);
    }

    public override Encoding Encoding
    {
        get { return Encoding.Default; }
    }
}

db.Log = new LoggingTextWriter();
于 2012-09-04T00:22:27.790 に答える