c# - 如何执行实体框架跟踪sql
问题描述
我使用实体框架6,linq来查询mysql。我在调试窗口中跟踪 linq 生成的 sql 字符串,如下所示:
INSERT INTO XXX(ID, Name, ...)
VALUES (:p0, :p1, :p2, NULL, NULL, NULL, NULL, NULL, :p3, :p4, :p5, :p6, :p7, NULL, :p8)
-- p0: 'ff641c20dac54f68a76ee7d30a8c39e1' (Type = String, IsNullable = false, Size = 32)
-- p1: 'M310000157' (Type = String, IsNullable = false, Size = 10)
-- p2: 'FY310000000201812000009' (Type = String, IsNullable = false, Size = 23)
...
现在我想在一些 mysql 客户端中调试这个 sql 以获得更多细节,比如解释如何使用索引。但是我不能直接运行trace sql。
有什么简单的方法可以执行跟踪 sql 吗?
解决方案
记录从 EF 发送到数据库的任何命令。要查看从 EF 6.x 生成的查询,请使用DBContext.Database.Log
属性
更多信息:https ://docs.microsoft.com/en-us/ef/ef6/fundamentals/logging-and-interception
推荐阅读
- python - CPLEX 和 Python 3.7
- sql - 为什么在having子句中使用别名有效?
- git - 是否可以在 NPM 中停用 ls-remote 检查?
- spring - 如何在 application.properties 中表示 Map - Spring Boot
- sql - SQL Group By最小值可用作变量?
- react-native - 我可以将 Web 应用程序的组件与 React Native 应用程序一起使用吗
- scala - Scala案例类中的隐式与隐式val
- java - 如何让 ViewModel 在首次运行时显示网络数据
- r - R中从长到宽到长格式的困难
- scala - Apache spark内部连接2个数据框得到TreeNodeException