ServiceStack AutoQuery синтетическое поле - PullRequest
3 голосов
/ 19 марта 2019

В клиентском DTO примера Northwind есть поле Email, которое является синтетическим - то есть оно не приходит из базы данных. Код здесь: https://github.com/ServiceStackApps/Northwind/blob/master/src/Northwind/Northwind.ServiceModel/Types/Customer.cs

Но при просмотре этого в запущенном примере это поле не отображается: http://northwind.servicestack.net/query/customers

Я заметил, что этот DTO имеет аннотации [DataContract] и [DataMember], тогда как большинство других примеров этого не делают.

Как добавить синтетические поля в AutoQuery? Простое добавление одного с полученным оцеплением дает мне ошибку, так как ServiceStack пытается извлечь его из базы данных. Нужно ли использовать аннотацию «Игнорировать» Или лучше всего было бы разделить «DTO-for-database» и «DTO-for-the-service» и каким-то образом использовать AutoMapper между ними?

1 Ответ

2 голосов
/ 19 марта 2019

Есть ли аннотация "Игнорировать", которую следует использовать?

Именно так, используйте [Ignore], чтобы игнорировать использование поля в OrmLite или AutoQuery , тогда как [IgnoreDataMember] - это когда вы хотите игнорировать свойство при сериализации.

Поле Email не отображается, поскольку оно не имеет поля [DataMember] в классе [DataContract], что является одним из способов игнорировать поля в сериализации с помощью ServiceStack.Text .

...