internal virtual async Task <int> Delete()
        {
            var client = new AzureTableClient <TableEntityBase <T>, T>("");
            var r      = await client.Delete(this);

            return(r != null && r.Result != null ? 1 : 0);
        }
        internal virtual async Task <List <T> > FetchAll()
        {
            var client   = new AzureTableClient <TableEntityBase <T>, T>("");
            var entities = await client.FetchAll(TableName);

            return(ExtractModels(entities));
        }
        internal virtual async Task <List <T> > FetchByQuery(string queryText)
        {
            var client   = new AzureTableClient <TableEntityBase <T>, T>("");
            var entities = await client.FetchByQueryText(TableName, queryText);

            return(ExtractModels(entities));
        }
        internal virtual async Task <List <T> > Fetch(string propertyName, string operation, string value)
        {
            var client   = new AzureTableClient <TableEntityBase <T>, T>("");
            var entities = await client.FetchByCriteria(TableName, propertyName, operation, value);

            return(ExtractModels(entities));
        }
        internal virtual async Task <T> FetchById()
        {
            var client   = new AzureTableClient <TableEntityBase <T>, T>("");
            var entities = await client.FetchById(TableName, Id);

            _model = entities.Count > 0 ? ExtractModels(entities)[0] : default(T);
            return(_model);
        }
        internal virtual async Task <T> Save()
        {
            PopulateFromModel(Model);
            var client = new AzureTableClient <TableEntityBase <T>, T>("");
            var result = await client.Save(this);

            return(_model);
        }