Windows 8 — функция обновления повреждена в C ++ Azure Mobile Library

Я пытаюсь обновить запись в одной из моих таблиц Azure Mobile с помощью функции «обновить» в лазурный мобильный Заголовок C ++. Но я получаю исключение. Вот как выглядит мой код:

void DBUtils::DBQuestion::UpdateQuestionInTable(std::shared_ptr<azure::mobile::table> table)
{
auto obj = json::value::object();
obj[U("id")] = json::value::string(ID);
obj[U("QuestionText")] = json::value::string(QuestionText);
obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);

table->update(obj);
}

Я подтвердил, что приведенный выше идентификатор действительно присутствует в таблице. Аналогичная операция вставки (которая не указывает поле идентификатора) фактически завершается успешно:

void DBUtils::DBQuestion::InsertIntoTable(std::shared_ptr<azure::mobile::table> table)
{
auto obj = json::value::object();
obj[U("QuestionText")] = json::value::string(QuestionText);
obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);

table->insert(obj);
}

Что я делаю неправильно?

2

Решение

Azure Mobile недавно обновил свою схему таблиц, так что поле Id теперь является строкой, которая заполняется сервером значением Guid, если клиент не устанавливает его.

Это изменение внесло ошибку в библиотеку C ++. В качестве обходного пути вы можете попробовать вызвать другую перегрузку для обновления, которая принимает строку идентификатора и объект.

void DBUtils::DBQuestion::UpdateQuestionInTable(utility::string_t id, std::shared_ptr<azure::mobile::table> table)
{
auto obj = json::value::object();
obj[U("QuestionText")] = json::value::string(QuestionText);
obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);

ID = id;

table->update(ID, obj);
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]