Azure Easy Tables - 仅加载一列

时间:2018-02-28 11:35:09

标签: azure xamarin xamarin.forms

是否有某种方法可以从Azure Easy Tables中仅为一行获取一个数据列?

例如,Xamarin.Forms应用程序会将项目名称发送到Azure并仅获取项目创建日期时间。

1 个答案:

答案 0 :(得分:2)

以下是我们只想从Name表中选择Dog列的示例。

此示例使用Azure Mobile ClientAzure Mobile Client SQL NuGet包。

模型

using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json;

namespace SampleApp
{
    public class Dog
    {
        public string Name { get; set; }
        public string Breed { get; set; }
        public int Age { get; set; }

        [JsonProperty(PropertyName = "id")]
        public string Id { get; set; }

        [CreatedAt]
        public DateTimeOffset CreatedAt { get; set; }

        [UpdatedAt]
        public DateTimeOffset UpdatedAt { get; set; }

        [Version]
        public string AzureVersion { get; set; }

        [Deleted]
        public bool IsDeleted { get; set; }
    }
}

逻辑

using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;

using Microsoft.WindowsAzure.MobileServices;
using Microsoft.WindowsAzure.MobileServices.Sync;
using Microsoft.WindowsAzure.MobileServices.SQLiteStore;

namespace SampleApp
{    
    public class MobileClientService
    {
        bool isMobileClientInitialized;
        MobileServiceClient mobileClient;

        public async Task<string> GetDogName(string id)
        {    
            await InitializeMobileClient(); 

            var dog =  await mobileClient.GetSyncTable<Dog>().LookupAsync(id);
            var dogName = dog.Name;

            return dogName;
        }

        public async Task<IEnumerable<string>> GetDogNames()
        {    
            await InitializeMobileClient(); 

            var dogNameList =  await mobileClient.GetSyncTable<Dog>().Select(x => x.Name).ToEnumerableAsync();

            return dogNameList;
        }

        async Task InitializeMobileClient()
        {
            if(isMobileClientInitialized)
                return;

            mobileClient = new MobileServiceClient("Your Azure Mobile Client Url");

            var path = Path.Combine(MobileServiceClient.DefaultDatabasePath, "app.db");
            var store = new MobileServiceSQLiteStore(path);
            store.DefineTable<Dog>();
            //ToDo Define all remaining tables

            await MobileServiceClient.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler());

        }
    }
}