So, I have a Subscription model that inherits from the Azure TableEntity class for use in the Get WebApi method as follows:
[HttpGet] public IEnumerable<Subscription> Subscribers()
In this method, I make a Select query in the table of my subscribers to find all the subscribers, but I only want to return a few columns (properties) as follows:
var query = new TableQuery<Subscription>().Select(new string[] { "PartitionKey", "RowKey", "Description", "Verified" });
The definition for the model is as follows:
public class Subscription : TableEntity { [Required] [RegularExpression(@"[\w]+", ErrorMessage = @"Only alphanumeric characters and underscore (_) are allowed.")] [Display(Name = "Application Name")] public string ApplicationName { get { return this.PartitionKey; } set { this.PartitionKey = value; } } [Required] [RegularExpression(@"[\w]+", ErrorMessage = @"Only alphanumeric characters and underscore (_) are allowed.")] [Display(Name = "Log Name")] public string LogName { get { return this.RowKey; } set { this.RowKey = value; } } [Required] [EmailAddressAttribute] [Display(Name = "Email Address")] public string EmailAddress { get; set; } public string Description { get; set; } public string SubscriberGUID { get; set; } public bool? Verified { get; set; } }
The following is the response from an XML API request:
<ArrayOfSubscription> <Subscription> <ETag>W/"datetime'2013-03-18T08%3A54%3A32.483Z'"</ETag> <PartitionKey>AppName1</PartitionKey><RowKey>Log1</RowKey> <Timestamp> <d3p1:DateTime>2013-03-18T08:54:32.483Z</d3p1:DateTime> <d3p1:OffsetMinutes>0</d3p1:OffsetMinutes> </Timestamp> <ApplicationName>AppName1</ApplicationName> <Description>Desc</Description> <EmailAddress i:nil="true"/> <LogName>Log1</LogName> <SubscriberGUID i:nil="true"/> <Verified>false</Verified> </Subscription> </ArrayOfSubscription>
As you can see, the model not only has several additional properties, such as SubscriberGUID , which I do not want to serialize in the response (and since they are not in the select request, they are still null), but TableEntity has fields like PartitionKey , RowKey , Etag and Timestamp , which are also serialized.
How can I continue to use Azure tables, but avoid serializing in the response these unwanted fields that I do not want to see.