2

我在 wpf 应用程序中为一组表单使用数据上下文对象,并将一些控件绑定到表的某些子表。我想跟踪数据上下文何时访问数据库。实现这一目标的最简单方法是什么?

4

1 回答 1

5

使用DataContext.Log属性:

db.Log = Console.Out;

dbDataContext. 如果您构造 的多个实例,请在构造函数内部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 回答