【问题标题】:How to convert Entity Framework to SQL command?如何将实体框架转换为 SQL 命令?
【发布时间】:2019-09-22 06:58:30
【问题描述】:

我想将此 EF 代码转换为 SQL 命令:

var parents = db.Fuels.Select(A => A.Parent).Distinct();
var data = db.Fuels.Where(B => !parents.Any(A => A == B.ID))
                   .OrderBy(A => A.Type);

我尝试编写 SQL 命令,但它不起作用:

select *
from Fuel as a
where id not in (select id from Fuel as b
                 where a.ID = b.Parent)

表结构:

ID      INT PK,
Name    NVARCHAR(50) Checked,
Parent  INT FK

表格数据

我想要这个输出

【问题讨论】:

  • 您始终可以使用 SQL Profiler 或类似工具来查看 Entity Framework 正在生成的 SQL。
  • 你能解释更多或写步骤吗?
  • 假设您安装了 Server Management Studio,它安装了名为 SQL Server Profiler 的东西,可通过“工具”菜单访问。您将创建一个新会话,启动它运行,然后运行您的实体框架代码。探查器将捕获对目标数据库进行的任何查询,因此您可以看到 EF 为您的 LINQ 查询生成的 SQL。

标签: c# sql-server asp.net-mvc entity-framework linq


【解决方案1】:

这是您要查找的查询:

;with parents as (select distinct parent as ID from @Fuel)
select * from @Fuel where id not in (select Id from @Fuel where Id in(select Id from 
parents))

SQL 小提琴:https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=dc39433e40541b814936f3dfea725c6b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多