2016-02-11 5 views
1

Я использую функцию AutoQuery и сказать, что есть что-то вроде этого:AutoQuery добавить логику, чтобы выбрать

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; 
     } 
    } 
} 

Это все хорошо, пока я пытаюсь разобраться на поле FullName, как это не часть фактического SQL запрос. Так что мне нужно, чтобы иметь возможность генерировать запрос, чтобы сделать что-то вроде:

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

Я просматривал документы, и я не мог найти ничего общего с настройки выберите часть запроса.

Возможно ли это?

ответ

1

Это возможно только с использованием Raw SQL Filters, но тогда вам нужно будет взять все выражение SELECT.

Сортировка по нескольким столбцам имеет сходное поведение к упорядочению по FullName:

?OrderBy=FirstName,LastName 

Другой вариант заключается в создании RDBMS Просмотр и изменение AutoQuery для запроса, что вместо этого.

+0

В этом случае я мог бы использовать несколько порядков по столбцам, но в большинстве случаев, когда мне нужно использовать COALESCE, более сложные операторы CASE WHEN или подзапросы это не так просто. Хорошо знать, что это возможно с Raw SQL, хотя и не так хорошо. Планируете ли вы добавить модификатор запроса для возвращаемых объектных моделей, чтобы оператор select мог быть изменен для каждого атрибута? – vonec

+0

Задача @vonec AutoQuery - предоставить простой, интуитивно понятный и независимый от RDBMS автоматический запрос, в то время как у вас есть некоторый контроль с параметрами расширяемости в AutoQuery (https://github.com/ServiceStack/ServiceStack/wiki/Auto-Query#extensibility -with-queryfilters), если вам нужно что-то более сложное, лучше всего пойти с Custom Service. – mythz