EF 6 DB-First系列--在Entity Framework中显示sql语句

在Entity Framework中显示sql语句

在这里,您将学习如何记录Entity Framework 6发送到数据库的命令和查询。

在EF 6之前,我们使用数据库跟踪工具或第三方跟踪实用程序来跟踪实体框架发送的数据库查询和命令。现在,EF 6提供了DbContext.Database.Log属性来记录DbContext生成的SQL。

Log属性是Action<string>类型的,所以你可以用字符串参数附加一个委托方法并返回void。

下面的示例演示了将EF活动记录到控制台。

using (var context = new SchoolDBEntities())
{
    context.Database.Log = Console.Write;
    var student = context.Students
                        .Where(s => s.StudentName == "Student1")
                        .FirstOrDefault<Student>();

    student.StudentName = "Edited Name";
    context.SaveChanges();
}

Output:
在这里插入图片描述
在上面的例子中,Console.Write()方法被附加到Log属性,因为它接受字符串参数并返回void。您可以在输出中看到,它记录了EF执行的所有活动,例如打开和关闭连接,执行和完成时间以及数据库查询和命令。

您可以将自定义类的方法附加到Log属性。下面的示例使用自定义类的方法记录SQL。

public class Logger
{
    public static void Log(string message)
    {
        Console.WriteLine("EF Message: {0} ", message);
    }
}
class EF6Demo
{
    public static void DBCommandLogging()
    {
        using (var context = new SchoolDBEntities())
        {
                
            context.Database.Log =  Logger.Log;   
             
            var student = context.Students
                                .Where(s => s.StudentName == "Student1")
                                .FirstOrDefault<Student>();

            student.StudentName = "Edited Name";
            context.SaveChanges();
        }
    }
}

参考

https://www.entityframeworktutorial.net/
https://msdn.microsoft.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值