我正在尝试使用C#CloseQuoteRequest关闭MSCRM中的报价。
CloseQuoteRequest closeQuoteRequest = new CloseQuoteRequest()
{
QuoteClose = new QuoteClose()
{
QuoteId = quote.ToEntityReference(),
Subject = "Quote Close " + DateTime.Now.ToString(),
},
Status = new OptionSetValue(-1),
RequestName = "CloseQuote",
};
Service.Execute(closeQuoteRequest);
我遇到了错误;
格式化程序尝试反序列化消息时引发了异常: 尝试反序列化参数时出错 http://schemas.microsoft.com/xrm/2011/Contracts/Services:request。的 InnerException消息为“第1行的位置711错误。”元素 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' 包含来自映射到名称的类型的数据 'CRM.Entities.Entities:QuoteClose'。反序列化器不知道 映射到该名称的任何类型。考虑更改 DataContractResolver上ResolveName方法的实现 返回名称“ QuoteClose”和名称空间的非空值 “ CRM.Entities.Entities”。”。请参阅InnerException了解更多信息 详细信息。
我没有内在的例外。
答案 0 :(得分:0)
MSDN中的代码示例没有设置RequestName = "CloseQuote"
属性,因为它不需要。删除它。
// Close the quote
CloseQuoteRequest closeQuoteRequest = new CloseQuoteRequest()
{
QuoteClose = new QuoteClose()
{
QuoteId = closeQuote.ToEntityReference(),
Subject = "Quote Close " + DateTime.Now.ToString()
},
Status = new OptionSetValue(-1)
};
_serviceProxy.Execute(closeQuoteRequest);
RequestName
获取或设置请求的名称。必需,但由派生类提供。(继承自OrganizationRequest。)状态
Status属性对应于Quote.StatusCode属性。在Microsoft Dynamics 365应用程序中将其显示为“状态原因”。如果将此属性的值设置为-1,则系统将设置相应的相应状态值。
答案 1 :(得分:0)
我不知道为什么会这样,但是在QuoteClose实体中添加.ToEntity()可行。
color
答案 2 :(得分:0)
WinQuoteRequest winQuoteRequest = new WinQuoteRequest();
Entity wonQuoteClose = new Entity("quoteclose");
wonQuoteClose.Attributes["quoteid"] = new EntityReference("quote", id);
wonQuoteClose.Attributes["subject"] = "Quote Close" + DateTime.Now.ToString();
winQuoteRequest.QuoteClose = wonQuoteClose;
winQuoteRequest.Status = new OptionSetValue(-1);
service.Execute(winQuoteRequest);