Linqer 不转换 T-Sql 查询

Posted

技术标签:

【中文标题】Linqer 不转换 T-Sql 查询【英文标题】:Linqer dont Convert T-Sql query 【发布时间】:2012-03-05 14:25:04 【问题描述】:

我使用 linqer 想要这个 sql 来 liqn 查询,但我有问题

 select * from Project where Id in (select Top 3 ForeignId from ActivityLog
 group by ForeignId order by count(*) desc)

问题:SQL 无法转换为 LINQ:在当前数据上下文中找不到字段 [Id in (select Top 3 ForeignId from ActivityLog group by ForeignId order by count(*) desc)]。

【问题讨论】:

您能否提供更多信息,例如。您的源代码不起作用? 这是不言自明的吗?在当前数据上下文中找不到 ID 我从对 DataContext 的引用中假设这是 Linq to SQL。您发布的内容似乎不是 Linq 查询,而是原始 SQL。尝试发布调用查询的实际 C# 代码。 您的 DataContext 的声音如何?您可以一次性编写 linq 查询来获取项目和活动日志吗?无论如何,最好根据 DataContext 中的类开始表达您的编程任务,从而精通 linq。 【参考方案1】:

我刚刚遇到了与 linqer 类似的问题。我发现解决方案是删除 ;在 SQL 查询之后再试一次。

这可能是您的上下文的问题。 有关设置上下文的说明,请参阅 Linqer – a nice tool for SQL to LINQ transition。 此外,请确保 *.dbml 和 *.designer.cs 文件是最新的,并定义 Project 表以包含 Id 列和 ActivityLog 表以包含 ForeignId 列。

这可能是您使用的 linqer 版本的错误。我使用的是 4.0.3,并且能够毫无问题地运行相同的查询(调整为使用我的表)。

【讨论】:

以上是关于Linqer 不转换 T-Sql 查询的主要内容,如果未能解决你的问题,请参考以下文章

Linqer不会这样做SQL .. :(

如何编写转换为 T-SQL 的 EF Core 查询包含

Linqer无法转换:SQL语法错误:每个GROUP BY表达式必须至少包含一个列引用

将 T-SQL 查询转换为 Postgres

将 Access Crosstab/PIVOT 查询转换为 T-SQL

将T-sql查询转换为linq