Я хочу назначить запись определенной очереди в моем приложении Silverlight.
Я отображаю список записей, и пользователь может выбрать одну или несколько записей. Затем я отображаю список очереди, и пользователь выбирает очередь, в которую он хочет добавить эти записи.
Я последовал этому примеру:
http://msdn.microsoft.com/en-us/library/gg309558.aspx
Я пробовал другой способ, но он никогда не работал.
Первый
Я пытался создать «пустой» QueueItem: (некоторые части кода отсутствуют, например, здесь нет записи Queue, но это не важно, это просто чтобы показать вам проблему)
internal void AddBillingToQueue()
{
QueueItem item = new QueueItem();
context.AddToQueueItemSet(item);
context.BeginSaveChanges(OnCreateCompleted, item);
}
private void OnCreateCompleted(IAsyncResult result)
{
QueueItem item = result.AsyncState as QueueItem
DataServiceResponse response = context.EndSaveChanges(result);
// Normally, the GUID shouldn't be empty anymore,
// but it fails at the EndSaveChanges line.
}
В сообщении об исключении сказано, что объектный код отсутствует. Поэтому я снова попытался указать объект, который хочу поместить в очередь.
internal void AddBillingToQueue(all_billing billing)
{
QueueItem item = new QueueItem();
item.ObjectId = new EntityReference()
{
Name = billing.all_name,
Id = billing.all_billingId,
LogicalName = "all_billing"
}
context.AddToQueueItemSet(item);
context.BeginSaveChanges(OnCreateCompleted, item);
}
private void OnCreateCompleted(IAsyncResult result)
{
QueueItem item = result.AsyncState as QueueItem
DataServiceResponse response = context.EndSaveChanges(result);
// again it fails
}
Сообщение об исключении теперь говорит, что QueueId отсутствует. Поэтому я попытался также указать ссылку на очередь.
internal void AddBillingToQueue(all_billing billing, Queue queue)
{
QueueItem item = new QueueItem();
item.ObjectId = new EntityReference()
{
Name = billing.all_name,
Id = billing.all_billingId,
LogicalName = "all_billing"
}
item.QueueId = new EntityReference()
{
Name = queue.Name,
Id = queue.QueueId,
LogicalName = "Queue"
};
context.AddToQueueItemSet(item);
context.BeginSaveChanges(OnCreateCompleted, item);
}
private void OnCreateCompleted(IAsyncResult result)
{
QueueItem item = result.AsyncState as QueueItem
DataServiceResponse response = context.EndSaveChanges(result);
// again it fails
}
И здесь сообщение об исключении:
<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>
<error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\">
<code>-2147217150</code>
<message xml:lang=\"nl-BE\">Queue</message>
</error>
Согласно этому сайту (http://www.cub -e.net / post / Microosft-Dynamics-CRM-Error-Code-List-List.aspx ) код означает: Указанный объект был не найден. Полагаю, это означает, что очередь не была найдена.
Но предоставленный GUID определенно прав, потому что он был получен из того же контекста.
Итак, если я предоставлю идентификатор очереди, он не будет работать. И если я этого не сделаю, это не удастся. Что я пропустил? Кто-то уже работал с QueueItem и конечной точкой REST?