我在MVC 5项目中将EF 6.0与LINQ一起使用。我想记录由实体框架DbContext执行的所有SQL查询,以进行调试/性能评估。
在Java / Hibernate中,可以通过设置property来实现等效行为hibernate.show_sql=true。实体框架中是否可能有类似行为?
hibernate.show_sql=true
您正在寻找MSDN上的“ 记录和拦截数据库操作”一文。
DbContext.Database.Log对于采用字符串的任何方法,可以将该属性设置为委托。最常见的做法是TextWriter将其设置为该TextWriter的“写入”方法,以将其与任何其他对象一起使用。当前上下文生成的所有SQL将记录到该编写器中。例如,以下代码会将SQL记录到控制台:
DbContext.Database.Log
TextWriter
using (var context = new BlogContext()) { context.Database.Log = Console.Write; // Your code here... }