如何查看实体框架生成的SQL?
(在我的特殊情况下,我正在使用mysql提供程序 - 如果它很重要)
我正在使用Entity Framework 7 Core RC2(重命名为:EF Core),我需要查看正在生成哪个SQL代码.在先前版本的Entity Framework中,我可以使用以下内容:
String sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
其中query是IQueryable对象...但是EF Core中没有ToTraceString.
我怎样才能在EF Core中做类似的事情?
我在我的控制器中有动作调用以下方法:
public IQueryable<AaaUserContactInfo> getcontactinfo(long[] id)
{
    var organizationsiteids = from accountsitemapping in entities.AccountSiteMappings
                            where id.Any(accountid => accountsitemapping.ACCOUNTID == accountid)
                            select accountsitemapping.SITEID;
    var usersdepts = from userdept in entities.UserDepartments
                    join deptdefinition in entities.DepartmentDefinitions on userdept.DEPTID equals deptdefinition.DEPTID
                    where organizationsiteids.Any(accountid => deptdefinition.SITEID == accountid)
                    select userdept;
    var contactsinfos = from userdept in usersdepts
                    join contactinfo in entities.AaaUserContactInfoes on userdept.USERID equals contactinfo.USER_ID
                    select contactinfo;
    return  contactsinfos;
}
但是当我运行应用程序并导航到action方法时,将在视图级别上引发以下错误: -
System.Data.EntityCommandExecutionException was unhandled by user code
  HResult=-2146232004
  Message=An error occurred while executing the command …例如,如果我有一个LINQ to SQL语句
var query = (from a in this.Context.Apples select a.Name).ToList();
当我想看看正在生成什么SQL时LINQ,我所做的就是ToList()在这个LINQ语句之后注释掉并在命令上放置断点然后我可以将其悬停并读取SQL.
我的问题:这是获取生成的SQL的正确方法吗?