8

使用此处的指南,我正在尝试记录我的 MVC Web 应用程序生成的 SQL。

该指南使用以下行:

context.Database.Log = Console.Write;

这显然不适用于 Web 应用程序。该指南描述了 Log 属性:

DbContext.Database.Log 属性可以设置为任何采用字符串的方法的委托。

正是这个我不明白,代表们只是让我感到困惑。如何使用此 EF6 功能?

4

3 回答 3

22

使用委托允许您编写任何带字符串的函数。作为一个非常简单的文件日志记录,您可以执行以下操作:

context.Database.Log = message => File.AppendText("C:\\mylog.txt").WriteLine(message);

在 Web 环境中,您可能希望使用 Trace 来记录此信息:

context.Database.Log = message => Trace.WriteLine(message);

您可以在匿名函数的 MSDN 页面上看到更多使用委托的示例。

于 2013-10-10T14:59:24.583 回答
5

要将日志写入文件,请尝试以下操作:

using (var context = new MyDbContext())
{
    var logFile = new StreamWriter("C:\\temp\\log.txt");
    context.Database.Log = logFile.Write;

    // Execute your queries here
    // ....

    logFile.Close();
}
于 2014-10-18T00:25:15.680 回答
2

您可以在调试窗口中打印它:

dbContext.Database.Log = message => Debug.Write(message);
于 2019-05-24T08:17:54.057 回答