2015-02-16 2 views
0

У меня есть запрос, как это:Annotated Игнорировать поле прибудет игнорируется в servicestack réponse

ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing> 

лицо имеет следующего поле

[Ignore] 
Public string Label { get { return FirstName + LastName; } 

В моем Результате я следующее

public int Id; 
public string Label 

Однако, если я добавляю атрибут Ignore к полю, он игнорируется. Поэтому всякий раз, когда я выполняю все, возвращается единственное, что есть список id и в QueryResponse Label всегда пуст, если я вернул Person вместо Result, я получаю полностью заполненный ответ.

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

ответ

1

После mythz объяснил мне тот факт, что, если он не сопоставляется с вашим ormlite db, он не будет отображаться на ваш итоговый DTO позже, я быстро разберусь. Вместо того, чтобы немедленно возвращался мой собственный DTO ответ в следующей строке:

ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing> 

Я только возвратил человеку объект:

ARequest : QueryBase<Person>, IJoin<Person, OtherThing> 

Тогда в моей службы я написал простой картографа по следующим направлениям:

QueryResponse<Result> response = result.ConvertTo<QueryResponse<Result>>(); 
    response.Results = new List<Result>(); 

    foreach (Person p in result.Results) 
    { 

     response.Results.Add(new Result{ Id = p.EmployeeId, Label = (p.FirstName + " " + p.LastName) }); 
    } 
    return response 

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

0

Не уверен, если я понимаю, что вы пытаетесь сделать, но если вы только хотите вернуть Label вы должны быть в состоянии добавить его в возвращаемом DTO, например:

public class Result 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Label { get { return FirstName + LastName } } 
} 
+0

Это то, что я сделал, но он не копирует ярлык от моего лица к моему результату. Однако в моем ответе это просто 'public string Label {get; задавать; } 'и в моем лице это с обычным get –

+0

@HenkJansen Просто ответ должен иметь свойство Label, как показано выше. Результат DTO - это то, к чему преобразуется набор результатов DB, ​​он не будет отображать поля, которые не существуют в запрошенных таблицах OrmLite. – mythz

+0

Хорошо, но у меня нет доступа к Firstname и lastname в результате dto из-за того, что это общий ответ для всех моих комбинированных ящиков, все они просто имеют ярлык. –

Смежные вопросы