SubSonic3:方法“FirstOrDefault”抛出SQL Server 2000的异常

时间:2009-09-09 06:52:57

标签: sql-server vb.net linq sql-server-2000 subsonic3

我正在使用SubSonic3和SQL Server 2000。

我遇到方法“FirstOrDefault”的问题 - 它总是抛出一个异常=“第1行:不正确的语法在'('。”附近来自SubSonic.Linq dll

编辑(添加评论代码):

InventoryDAL = DAL project name (dll) 
Inventort= Subsonic3 Gnerated classes 
Name space WHWarehouses = gnerated object 

Dim WareH = (From Wh In InventoryDAL.Inventort.WHWarehouses.All _ 
  Where Wh.WarehouseID = 1 ).FirstOrDefault

2 个答案:

答案 0 :(得分:0)

我不知道SubSonic,但是Hibernate有不同的SQL方言你可以告诉它使用,可能想看看是否有任何方法告诉它使用SQL 2000的方言

答案 1 :(得分:0)

这也是我遇到的一个问题,遗憾的是,生成TOP的代码是在SubSonic Dependency中生成的,无法在TT模板中更改。

TSqlFormatter 下的SubSonic源.cs类是一种方法

protected override Expression VisitSelect(SelectExpression select)

...

if (select.Take != null)
            {
                sb.Append("TOP (");
                this.Visit(select.Take);
                sb.Append(") ");
            }

...

删除db.Append中的括号应解决SQL的问题,但我不确定这是否会破坏SQL Compact Edition等其他提供程序?

我在这里提出了它:SubSonic Bug with TOP keyword?之后我才读到你的查询。

希望这有帮助。