Вставьте объекты в несколько разделов хранилища таблиц Azure (одну и ту же таблицу) и узнайте, какие из них, если таковые имеются, не удалось вставить - PullRequest
2 голосов
/ 28 января 2011

У меня установлена ​​рабочая роль Azure, позволяющая получать информацию от нескольких внешних веб-служб, анализировать ее по нескольким типам сущностей и сохранять эти сущности в хранилище таблиц Azure.Важно то, что большинство, если не все эти объекты, вставляются в свои собственные разделы в таблице.

Я использую расширенный класс TableServiceContext с вызовами AddObject (EntityToBeInserted) для присоединения новых сущностей к tableservicecontext по мере их создания.В настоящее время я затем вызываю TableServiceContext.SaveChangesWithRetries (SaveChangesOptions.None), чтобы сохранить эти объекты в таблице в соответствующих разделах.Все это прекрасно работает.

Мой вопрос: что происходит, когда он не работает нормально?Я могу заставить не сохранять 1+ сущностей, делая их ключи строк и разделов неуникальными, но сообщение об ошибке, которое я улавливаю, не указывает, какая из сущностей потерпела неудачу, просто произошла ошибка водин из них.

Как сохранить сущности в Table Storage из рабочей роли, где каждая сущность переходит в свой собственный раздел (предположим, что в один из этих вызовов сохранения вставлено 2-30 сущностей), так что если один или несколькоиз этих вставок не получится, я смогу хотя бы узнать, какая это была?Эти операции очень чувствительны ко времени, поэтому я, к сожалению, не могу рассчитывать на длительные параметры повтора, чтобы дождаться, когда соответствующие узлы хранения снова станут доступными.

Спасибо, Алекс

1 Ответ

0 голосов
/ 16 сентября 2011

Ответ заключается в том, что вы не можете выполнять массовые вставки между разделами хранилища таблиц, поэтому вы должны отслеживать идентификаторы (ключ раздела и строка строки) вставляемых сущностей и проверять их успешность в обратном вызове вызова вставки асинхронного хранения таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...