相关疑难解决方法(0)

如何查看实体框架生成的SQL?

如何查看实体框架生成的SQL?

(在我的特殊情况下,我正在使用mysql提供程序 - 如果它很重要)

ado.net entity-framework

587
推荐指数
18
解决办法
29万
查看次数

从EF Core查询中获取SQL代码

我正在使用Entity Framework 7 Core RC2(重命名为:EF Core),我需要查看正在生成哪个SQL代码.在先前版本的Entity Framework中,我可以使用以下内容:

String sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
Run Code Online (Sandbox Code Playgroud)

其中query是IQueryable对象...但是EF Core中没有ToTraceString.

我怎样才能在EF Core中做类似的事情?

entity-framework-core

48
推荐指数
5
解决办法
3万
查看次数

SQL语句的某些部分嵌套得太深.重写查询或将其分解为较小的查询

我在我的控制器中有动作调用以下方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序并导航到action方法时,将在视图级别上引发以下错误: -

System.Data.EntityCommandExecutionException was unhandled by user code
  HResult=-2146232004
  Message=An error occurred while executing the command …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

14
推荐指数
2
解决办法
2万
查看次数

查看LINQ生成的SQL

例如,如果我有一个LINQ to SQL语句

var query = (from a in this.Context.Apples select a.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

当我想看看正在生成什么SQL时LINQ,我所做的就是ToList()在这个LINQ语句之后注释掉并在命令上放置断点然后我可以将其悬停并读取SQL.

我的问题:这是获取生成的SQL的正确方法吗?

c# linq

7
推荐指数
2
解决办法
412
查看次数