有没有办法跟踪数据上下文何时命中数据库?

时间:2012-09-04 00:12:11

标签: c# linq linq-to-sql

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

1 个答案:

答案 0 :(得分:5)

使用DataContext.Log属性:

db.Log = Console.Out;

dbDataContext。如果您构建了DataContext的多个实例,请在Log构造函数中设置DataContext,以便它们都已正确记录。

您可以使用此技术登录文件,内存或调试窗口,如in this tutorial所示。如果您定义了自定义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();