我想将记录分配给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.
}
异常消息表示objecttypecode缺失。所以我再次尝试提供我想要放入队列的对象。
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.aspx),代码表示:找不到指定的实体。我认为这意味着找不到Queue。
但提供的GUID肯定是正确的,因为它是从相同的上下文中检索的。
因此,如果我提供队列ID,则会失败。如果我不这样做,那就失败了。我错过了什么?有人已经使用QueueItem和REST端点吗?
答案 0 :(得分:3)
这可能指出了显而易见的,你确实提到并非所有的代码都存在,所以我确实想知道这是否是副作用,但行。
LogicalName = "Queue"
跳出来,因为使用其余端点就实体名称而言区分大小写(即全部小写),因此可能无法找到队列。
除此之外,如果您的应用程序向用户显示队列以分配项目,此点也可能是静音但如果它是实际记录,则无法找到确保有权能够查看队列,添加到队列/分配您试图放入队列的项目。
希望有所帮助。