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 监听已经可以满足大部分调试需求。

posted @ 2020-10-15 00:38  敖毛毛  阅读(690)  评论(0编辑  收藏  举报