zoukankan      html  css  js  c++  java
  • ef 查询生成语句的几种方式

    前言

    整理一下ef 如何查看生成sql 语句的,现在有ef core 了,统一整理一下。

    正文

    方式如下:

    数据库监听

    这是一种推荐方式,因为调试和代码分开,不会有影响。

    然后连接:

    然后可以进行一些常规选择,保存监听的位置。

    然后是选择事件:

    只筛选Tsql相关的。

    然后通过列筛选:

    这里介绍几个,一个是HOMENAME,这个是电脑的电脑名,因为可能有多个用户在操作。其实一般来说,每个人的测试服务器的账号都是不一样的,也可以通过LOGINNAME 来筛选。

    然后一个就是数据库的DATABASENAME,这个你获取到的不一定是你查的那个数据库,但是你可以排除REPORTSERVER 这个数据库,因为这个是报告服务,而且频繁操作,非常影响你的查看。

    然后其他的其实可以按照自己的需求进行筛选。

    EF 链式

    EFForTestEntities eFForTestEntities = new EFForTestEntities();
    var sql=eFForTestEntities.User.AsNoTracking();
    Console.WriteLine(sql);
    Console.Read();
    

    通过调用AsNoTracking 查看,一般是另外写测试单元来查看。

    linq

    linq和上面的差不多,就是调用的方法改为:ToTraceString()

    Log 输出

    DbContext.Database.Log = (c) => { Console.WriteLine(c); }

    这种方式通过log 打印来输出,我们可以放在日志文件中,然后进行查看。

    这种方式同样使用与ef core,而EF 链式和linq 在.net core的ef是无法使用的。

    第三方工具

    在网上可以找到第三方工具在调试的时候可以查询到,个人表示不推荐,因为麻烦,而且sql 监听已经可以满足大部分调试需求。

  • 相关阅读:
    Python装饰器之functools.wraps的作用
    [转]scala和RDD中的占位符"_"
    Scala,Java,Python 3种语言编写Spark WordCount示例
    CentOS系统安装Python3
    [爬虫]采用Go语言爬取天猫商品页面
    go语言的排序和去重
    go语言字符串的连接和截取
    [转]git commit --amend用法
    KM算法小结
    Protocol Buffers学习教程
  • 原文地址:https://www.cnblogs.com/aoximin/p/13815936.html
Copyright © 2011-2022 走看看