2016-02-11 1 views
1

J'utilise fonction AutoQuery et dire que j'ai quelque chose comme ceci:AutoQuery ajouter une logique pour sélectionner

public class Rockstar 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int? Age { get; set; } 
}  

public class QueryCustomRockstars : QueryBase<Rockstar, CustomRockstar> {} 

public class CustomRockstar 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int? Age { get; set; } 
    public string FullName { 
     get { 
      return FirstName + " " + LastName; 
     } 
    } 
} 

Tout cela est bien jusqu'à ce que j'essaie de trier sur le champ FullName comme il ne fait pas partie de SQL réelle question. Donc ce que je besoin est d'être en mesure de générer la requête de faire quelque chose comme:

SELECT CONCAT(FirstName,' ',LastName) As FullName 

Je regardais à travers les documents et je ne pouvais pas trouver quelque chose à voir avec la personnalisation de la partie sélectionnée de la requête.

Est-ce possible?

Répondre

1

Cela ne serait possible qu'en utilisant Raw SQL Filters, mais vous devrez alors prendre en charge l'intégralité de l'expression SELECT.

Commande par plusieurs colonnes a un comportement similaire à la commande par FullName:

?OrderBy=FirstName,LastName 

Une autre option est de créer une vue RDBMS et changer AutoQuery pour interroger qu'au lieu.

+0

Dans ce cas, je pourrais utiliser plusieurs colonnes par ordre, mais dans la plupart des cas où j'ai besoin d'utiliser COALESCE, des instructions ou des sous-requêtes CASE WHEN plus complexes, cela ne serait pas si simple. Bon à savoir que c'est possible avec Raw SQL, mais pas aussi bien. Avez-vous l'intention d'ajouter un modificateur de requête pour les modèles d'objets retournés afin que l'instruction select puisse être modifiée par attribut? – vonec

+0

@vonec L'objectif d'AutoQuery est de fournir des requêtes automatiques simples, intuitives et indépendantes du SGBDR, tandis que vous avez un certain contrôle avec [options d'extensibilité dans AutoQuery] (https://github.com/ServiceStack/ServiceStack/wiki/Auto-Query#extensibility -with-queryfilters), si vous avez besoin de quelque chose de plus compliqué, il est préférable d'utiliser un service personnalisé. – mythz