Исключение при обновлении таблицы данных мобильных служб Azure

Я пытаюсь разработать приложение для Windows Phone с помощью мобильных сервисов Azure. Я использую службы аутентификации, предоставляемые порталом Azure. После аутентификации пользователю необходимо ввести некоторые данные, такие как его имя, идентификатор электронной почты и т. д. Также я ограничил одного пользователя использованием только одной строки с помощью скрипта вставки. Я принимаю ввод, используя несколько страниц.

моя таблица

public class myTabble
    {
        public string Id { get; set; }

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

        [JsonProperty(PropertyName = "age")]
        public int age { get; set; }

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

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

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

моя функция обновления на кнопке второй страницы

 private async void UpdateCheckedTodoItem(myTabble item)
        {

            await todoTable.UpdateAsync(item);

        }
        private async void myFunction()
        {
            var names = await todoTable
                     .Select(t => t.Id)
                          .ToEnumerableAsync();
            var myName = names.FirstOrDefault();
            string a = myName;


            var item = await todoTable
                .Where(todoItem => todoItem.Id == a)
                .ToCollectionAsync();

            item.street = street.Text; //error
            item.colege = colege.Text; //error



        }

        private void save_Click(object sender, RoutedEventArgs e)
        {


            try
            {

                myFunction();

            }
            catch
            {
                MessageBox.Show("Invalid input");
            }

        }

я получаю эту ошибку

Microsoft.WindowsAzure.MobileServices.MobileServiceCollection<Test.myTabble,Test.myTabble>' does not contain a definition for 'hobby' and no extension method 'hobby' accepting a first argument of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceCollection<Test.myTabble,Test.myTabble>' could be found (are you missing a using directive or an assembly reference?

person Bedant    schedule 20.01.2014    source источник
comment
Похоже, вы создаете новый объект и пытаетесь его обновить. Вы должны получить объект из БД либо заранее, либо сейчас, а затем обновить.   -  person AD.Net    schedule 20.01.2014
comment
не могли бы вы предоставить пример кода.   -  person Bedant    schedule 20.01.2014
comment
Вы обновляете запись, которая уже находится в таблице, у которой уже есть идентификатор. Когда вы делаете это: myTabble item= new myTabble();, это имеет идентификатор 0, что указывает на то, что это новая запись. Таким образом, у вас уже должен быть идентификатор, когда вы приносите данные для обновления. Пожалуйста, используйте этот идентификатор для заполнения свойства Id вашего нового объекта.   -  person AD.Net    schedule 20.01.2014
comment
Я старался изо всех сил, но не нашел решения. Я обновил вопрос, как я пытался. пожалуйста, посмотрите сразу.   -  person Bedant    schedule 21.01.2014


Ответы (1)


var items = await todoTable
                .Where(todoItem => todoItem.Id == a)
                .ToCollectionAsync();

var item = items.FirstOrDefault();
if(item != null)
{
    item.street = street.Text; //
    item.colege = colege.Text; //
    await todoTable.UpdateAsync(item);
}

Я почти забыл API, я не помню, есть ли какой-либо вызов для его получения, в этом случае вам не нужно делать ToCollectionAsync(), который возвращает collection.

person AD.Net    schedule 20.01.2014