2009-05-12 8 views
1

Je suis en train de construire la requête suivante:Requête d'alias subsonique - comment?

`new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
.From(ArrGruppeLinie.Schema) 
.InnerJoin(ArrGruppe.IdColumn, ArrGruppeLinie.ArrGruppeIDColumn) 
.Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
.And("Arrgruppe.Tekst").Like("mytext");` 

Il génère une requête défectueuse en raison de la .And() parce que j'ai alias attachés sur les deux colonnes avec le même nom - l'opérateur et est ici :

... AND (ArrGruppe.Tekst LIKE @ArrGruppe.Tekst1 
)',N'@Kategori0 tinyint,@ArrGruppe.Tekst1 varchar(10)',@Kategori0=20,@ArrGruppe.Tekst1='mytext' 

Je n'ai pas été en mesure de trouver quoi que ce soit sur Google qui pourrait résoudre ce problème. Comment écrire la requête Subsonic pour générer un paramètre SQL valide pour ArrGruppe.Tekst ??

EDIT: Le problème a été résolu avec une mise à jour de la version 2.1 Final vers la version 2.2.

Répondre

1
new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
    .From(ArrGruppeLinie.Schema) 
    .InnerJoin(ArrGruppe.Columns.Id, ArrGruppeLinie.Columns.ArrGruppeID) 
    .Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
    .And(Arrgruppe.Columns.Tekst).Like("mytext"); 

Si essayez de ne pas mise à niveau vers la dernière version de SubSonic http://code.google.com/p/subsonicproject/downloads/list parce que vous pouvez frapper la question suivante (fixe 2.2)

Google Numéro 31 - où l'expression non formatage correctement avec le nom de colonne qualifiée

+0

J'ai une situation où j'ai deux tables avec des noms de colonnes correspondants "ArrGruppe.Tekst" et "ArrGruppeLinie.Tekst" qui est. La question est: comment écrire une requête SubSonic dans laquelle je génère des alias pour les noms de colonne pour faire du SQL valide - et dans la même requête créer un filtre AND basé sur l'une des colonnes que je viens de créer un alias? J'ai essayé votre approche - ceci génère les éléments suivants: ET Tekst comme @ Tekst1 ... qui est invalide parce Tekst est une colonne ambiguë parce qu'il ya deux d'entre eux. Veuillez réécrire si vous avez besoin d'informations supplémentaires: o) – kerbou

+0

J'ai modifié la requête ci-dessus afin de corriger l'erreur de nom de colonne ambiguë. Faites-moi savoir si ce n'est pas le cas –

+0

Désolé. Il génère la clause AND suivante: ... ET ArrGruppe.Tekst LIKE @ ArrGruppe.Tekst1 qui n'est pas valide car vous ne pouvez pas avoir un point dans le nom du paramètre. – kerbou

Questions connexes