2009-09-09 4 views
0

J'utilise SubSonic3 avec SQL Server 2000.SubSonic3: Méthode "FirstOrDefault" throws Exception avec SQL Server 2000

J'ai problème avec la méthode "FirstOrDefault" - il jette toujours une exception = « Ligne 1: syntaxe incorrecte . près '(' » de la dll SubSonic.Linq

EDIT (Ajout de code de commentaire):

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

pouvez-vous utiliser SQL Profiler pour voir ce qui s'exécute sur le serveur Sql? – Beatles1692

+1

Si vous pouviez s'il vous plaît ajouter un code pour montrer ce que vous faites exactement et nous serions beaucoup mieux en mesure de vous aider. – Robban

+0

oui - définitivement - montrez-nous votre extrait de code qui fait cet appel! –

Répondre

0

Je ne sais pas subsonique, mais Hibernate a différents dialectes de SQL, vous pouvez dire à utiliser, pourrait vouloir voir s'il y a un moyen de lui dire d'utiliser un dialecte pour SQL 2000

0

C'est un problème que j'ai rencontré aussi et malheureusement le code pour générer le TOP est généré dans la dépendance subsonique et ne peut pas être changé dans les modèles TT.

Dans la source SubSonic sous classe TSqlFormatter .cs est une méthode

protected override Expression VisitSelect(SelectExpression select) 

...

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

....

Retrait des crochets dans db.Append devrait résoudre le problème pour SQL mais je ne suis pas sûr si cela peut casser d'autres fournisseurs tels que SQL Compact Edition?

Je l'ai soulevé ici: SubSonic Bug with TOP keyword? avant de vous lire la requête.

Espérons que cela aide.

Questions connexes