Linqer 不会执行此 SQL .. :(
Posted
技术标签:
【中文标题】Linqer 不会执行此 SQL .. :(【英文标题】:Linqer won't do this SQL.. :( 【发布时间】:2010-11-27 11:03:21 【问题描述】:我有这个快速查询,但由于我的表名为 User(SQL 关键字),Linqer(SQL 到 LINQ 转换器)无法转换 SQL 查询。
这里是查询:
SELECT TOP (100) PERCENT
dbo.[User].OID,
dbo.[User].FirstName + ' ' + dbo.[User].LastName AS [User Name],
COUNT(dbo.AssignedCounty.OID) AS [Counties Assigned],
dbo.UserType.Name AS [User Type]
FROM
dbo.UserType
INNER JOIN dbo.[User] ON dbo.UserType.OID = dbo.[User].UserTypeID
LEFT OUTER JOIN dbo.AssignedCounty ON dbo.[User].OID = dbo.AssignedCounty.UserID
GROUP BY
dbo.[User].OID,
dbo.[User].FirstName + ' ' + dbo.[User].LastName,
dbo.UserType.Name,
dbo.[USER].IsActive
HAVING
(dbo.[User].IsActive = 1)
ORDER BY
[User Name]
谁能指导我如何解决这个问题?我需要 LINQ。
【问题讨论】:
Linqer 似乎不会执行此查询,因为它在您连接的数据库中找不到 User 表,而不是因为 SQL 语句的复杂性。 【参考方案1】:显然,使用关键字作为表/列名称是一个非常糟糕的习惯。 User/Users 是 SQL Server 中的关键字。此外,连接混乱,Linqer 或 SQL Metal 无法处理它们,但是,LinqPad 能够理解查询,但由于它不是转换工具,对我没有好处。我终于进行了大规模的重命名操作,并且我的大多数失败查询刚刚开始再次工作。用户 -> 系统用户
【讨论】:
知道如何在不更改表名的情况下使其工作吗? 对原始选择查询中的表使用标签:SELECT MyUsers.* FROM User MyUsers WHERE MyUsers.IsActive = 1
以上是关于Linqer 不会执行此 SQL .. :(的主要内容,如果未能解决你的问题,请参考以下文章
sqlmetal.exe在路径中找不到,即使它在我的机器上正确的路径 - Linqer程序
构造复杂Lambda困惑之学会用LinqPad和Linqer实现Sql 和 Lambda之间的互转