2009-09-09 52 views
0

我使用SubSonic3與SQL Server 2000SubSonic3:方法「FirstOrDefault」拋出異常與SQL Server 2000

我有問題與方法「FirstOrDefault」 - 它總是拋出一個異常=「1行:不正確的語法。靠近「(」」從SubSonic.Linq DLL

EDIT(由來自注釋代碼):

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 
+0

你可以使用SQL事件探查器來查看Sql服務器上正在執行什麼? – Beatles1692 2009-09-09 07:04:30

+1

如果你可以請添加一些代碼來顯示你正在做什麼,我們會更好地幫助你。 – Robban 2009-09-09 07:05:41

+0

是的 - 絕對 - 向我們展示您的代碼片段,使這個電話! – 2009-09-09 07:54:23

回答

0

我不知道亞音速,但具有休眠SQL的不同方言,你可以告訴它使用,可能想看看是否有任何方式告訴它使用方言SQL 2000

0

這是我遇到的問題,不幸的是生成TOP的代碼是在SubSonic Dependency中生成的,無法在TT模板中進行更改。

在亞音速源下TSqlFormatter的.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?在我讀你之前查詢。

希望這會有所幫助。