获取从Azure Mobile Service返回的数据并写入IsolatedStorage中的XML文件

本文关键字:IsolatedStorage 中的 文件 XML 数据 Azure Mobile Service 返回 获取 | 更新日期: 2023-09-27 18:25:21

我正在这方面进入一个全新的领域。。。

目前,我正在使用Azure移动服务和SQL Azure数据库来存储我的Windows Phone 8应用程序的数据。每次启动应用程序时,它都会通过我设置的一些查询从特定表中提取所有数据。

items = await phoneTable
    .Where(PhoneItem => PhoneItem.Publish == true)
    .OrderBy(PhoneItem => PhoneItem.FullName)
    .ToCollectionAsync();

然而,这并不总是一个很好的做法。我正在尝试实现一种方法,使数据在加载后保存到应用程序的IsolatedStorage中的XML文件中。

我已经得到了一些代码,我认为应该读取IsolatedStorage并搜索XML文件,但我不知道如何下载数据,然后将其写入IsolatedStorage

    public static IEnumerable<Phones> GetSavedData()
    {
        IEnumerable<Phones> phones = new List<Phones>();
        try
        {
            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                string offlineData = Path.Combine("WPTracker", "Offline");
                string offlineDataFile = Path.Combine(offlineData, "phones.xml");
                IsolatedStorageFileStream dataFile = null;
                if (store.FileExists(offlineDataFile))
                {
                    dataFile = store.OpenFile(offlineDataFile, FileMode.Open);
                    DataContractSerializer ser = new DataContractSerializer(typeof(IEnumerable<Phones>));
                    phones = (IEnumerable<Phones>)ser.ReadObject(dataFile);
                    dataFile.Close();
                }
                else
                {
                    // Call RefreshPhoneItems();
                }
            }
        }
        catch (IsolatedStorageException)
        {
        }
        return phones;
    }

我正在使用AzureMobileServices SDKNewtonsoft.Json与数据库进行交互。如有任何帮助,我们将不胜感激!

获取从Azure Mobile Service返回的数据并写入IsolatedStorage中的XML文件

在这种情况下不要使用ToCollectionAsync-它将返回一个在绑定到某些UI控件时最适合使用的对象。使用ToListAsync,有点像下面的代码:

items = await phoneTable
    .Where(PhoneItem => PhoneItem.Publish == true)
    .OrderBy(PhoneItem => PhoneItem.FullName)
    .ToListAsync();
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
    string offlineData = Path.Combine("WPTracker", "Offline");
    string offlineDataFile = Path.Combine(offlineData, "phones.xml");
    IsolatedStorageFileStream dataFile = null;
    dataFile = store.OpenFile(offlineDataFile, FileMode.Create);
    DataContractSerializer ser = new DataContractSerializer(typeof(IEnumerable<Phones>));
    ser.WriteObject(dataFile, items);
    dataFile.Close();
}