Я пытаюсь обновить запись в одной из моих таблиц 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);
}
Что я делаю неправильно?
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);
}
Других решений пока нет …