Получение информации из мобильной службы Azure в приложение Windows 8.

Я разрабатываю приложение для Windows 8 на C# с использованием мобильных служб Azure. Это первый раз, когда я использую Azure, я понял, как помещать данные в таблицы из моего приложения. Чего я не могу сделать, так это получить отдельные фрагменты данных на основе одного бита данных в таблице. Например, получить имя из мобильного сервиса, например, на основе идентификатора.


person ProgrammingRookie    schedule 18.03.2014    source источник


Ответы (2)


Если вы хотите получить элемент на основе идентификатора, вы можете использовать метод LookupAsync:

var table = MobileService.GetTable<MyDataType>();
var item = await table.LookupAsync(id);

Если вы хотите получить элемент на основе другого свойства, вы можете использовать предложение Where, как упоминалось в @Sopuli, но вам не нужно создавать для этого коллекцию, если все, что вам нужно, это сам элемент:

var table = MobileService.GetTable<MyDataType>();
var items = await table.Where(d => d.Property == propValue).ToEnumerableAsync();
var item = items.FirstOrDefault();
person carlosfigueira    schedule 18.03.2014
comment
Большое спасибо! Сработало удовольствие и так просто. - person ProgrammingRookie; 18.03.2014
comment
Не могли бы вы также сказать мне, как обновить информацию в точке с учетом идентификатора? Было бы очень благодарно @carlosfigueira - person ProgrammingRookie; 19.03.2014
comment
Самый простой способ — запросить элемент (как показано ниже), изменить любое свойство, которое вы хотите в своем объекте, а затем вызвать UpdateAsync с этим объектом. - person carlosfigueira; 19.03.2014
comment
Супер Спасибо еще раз - person ProgrammingRookie; 19.03.2014

Чтобы получить строку из таблицы, где id=10000;

int WantedID = 10000;
public IMobileServiceTable<SomeTable> MyTable = App.MobileService.GetTable<SomeTable>();
MobileServiceCollection<SomeTable, SomeTable> MyList = new MobileServiceCollection<SomeTable, SomeTable>(MyTable.Where(t => t.id == WantedID));

И ваш класс SomeTable будет выглядеть примерно так:

using Newtonsoft.Json;
...
public class SomeTable: INotifyPropertyChanged
{
    private Int64 _id;
    [JsonProperty(PropertyName = "id")]
    public Int64 id
    {
        get
        {
            return _id;
        }
        set
        {
            if (value != _id)
            {
                _id = value;
                NotifyPropertyChanged("id");
            }
        }
    }

    private string _name;
    [JsonProperty(PropertyName = "name")]
    public string name
    {
        get
        {
            return _name;
        }
        set
        {
            if (value != _name)
            {
                _name= value;
                NotifyPropertyChanged("_name");
            }
        }
    }

Теперь ваш MyList заполнен данными, загруженными из Azure, и вы можете, например, связать их с LonglistSelector. И если вам нужно получить доступ к свойству одного конкретного элемента данных, вы можете сделать MyList[0].name

Кроме того, я бы посоветовал, чтобы ваш класс SomeTable был точным клоном вашей таблицы в Azure, и каждое имя свойства точно соответствовало именам столбцов в таблице.

person Sopuli    schedule 18.03.2014
comment
Спасибо за совет - person ProgrammingRookie; 18.03.2014