2009-05-20 6 views
0

Je suis en train de faire quelque chose comme ceci:Subsonic - opération Bit Où l'article

int count = new Select().From(tblSchema).Where("Type & 1").IsEqualTo("1").GetRecordCount(); 

Et le message d'erreur est:

syntaxe incorrecte près de '&'.

Doit déclarer la variable scalaire "@Deleted". Est-ce possible avec SubSonic?

Est-il possible de faire ça avec SubSonic?

+0

Il est pas très clair ce que vous essayez d'accomplir pourriez-vous ajouter Dressez l'instruction SQL que vous voulez que SubSonic génère –

+0

je vais deviner select count (*) où type & 1 – rball

Répondre

-1

Il est un peu flou quant à ce que vous essayez d'accomplir, mais voici une meilleure estimation.

int count = new Select().From(tbl.Schema).Where(tbl.TypeColumn).IsEqualTo(true).GetRecordCount(); 
0

doit déclarer la variable scalaire « @Deleted »

La deuxième erreur serait dû à l'utilisation des suppressions logiques sur la table que vous interrogez (la table a une colonne isDeleted ou supprimé).

Mais je regarde à travers le code, je ne suis pas sûr comment ce paramètre est en train d'entrer. La méthode SqlQuery.GetRecordCount n'appelle pas CheckLogicalDelete(), d'après ce que je peux dire. Ce message d'erreur est-il sans rapport?

0

Cela semble être un bug dans la façon dont SubSonic nomme ses paramètres lorsqu'il génère le SQL à exécuter.

Qu'est-ce qui se passe est que SubSonic regarde "Type 1", puis de créer un paramètre à comparer avec appelé @Type & 10 qui n'est pas un nom de paramètre SQL valide. Donc, vous finirez avec le SQL suivant de votre requête originale. Vous devez soumettre un bug à http://code.google.com/p/subsonicproject/

En attendant, vous pouvez contourner le bug pour l'instant à l'aide d'une requête en ligne:

http://subsonicproject.com/docs/Inline_Query_Tool