我正在尝试构建一个在销售订单上执行某些操作的插件。我还必须将订单设置为已履行。我在SDK文档中找到了必须用于以正确方式完成订单的提取
var request = new FulfillSalesOrderRequest
{
OrderClose = new OrderClose
{
SalesOrderId = new EntityReference
{ LogicalName = orderEntityName, Id = orderId }
},
Status = new OptionSetValue(newStatus)
};
问题是代码无法编译,因为MVS说“无法找到类型或命名空间名称'OrderClose'(你是否缺少using指令或程序集引用?)”。右键单击“new OrderClose”(OrderClose带有红色下划线)我看不到菜单中的Resolve部分。 我也尝试过这种方式:
var request = new FulfillSalesOrderRequest();
request.OrderClose = new OrderClose();
request.OrderClose.LogicalName = orderEntityName;
request.OrderClose.Id = orderId;
request.Status = new OptionSetValue(newStatus);
如何编写代码(希望能够正常工作)?
答案 0 :(得分:1)
由于OrderClose
不是类,而是属性的名称,因此无法使用new
创建它。
由于属性属于Entity
类型,您需要像这样创建Entity
的实例:
request.OrderClose = new Entity();
答案 1 :(得分:0)
OrderClose在Assembly" Microsoft.Crm.Sdk.Proxy" (在Microsoft.Crm.Sdk.Proxy.dll中)
您是否添加了Microsoft.Crm.Sdk.Proxy.dll作为参考?不只是
using Microsoft.Crm.Sdk.Messages;
但实际上转到解决方案资源管理器窗格并右键单击引用>添加引用并选择Microsoft.Crm.Sdk.Proxy.dll。
编辑:右键点击红色曲线并选择" Resolve"除非引用正确的装配,否则不会工作。
答案 2 :(得分:0)
听起来示例代码假定您已为组织生成了早期绑定代码。如果您在项目中包含早期绑定代码,则此引用将得到解决。看到这个链接:
https://msdn.microsoft.com/en-us/library/gg327844.aspx
CrmSvcUtil.exe是CRM SDK的一部分。这是一个如何使用它的模板:
CrmSvcUtil.exe /url:http://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName>
答案 3 :(得分:0)
这是一个早期绑定请求,如果你没有使用CrmScvUtil,那就是你无法编译的原因。
这是后期绑定请求的示例:
需要此命名空间。
using Microsoft.Xrm.Sdk.Messages;
这就是代码。
var request = new FulfillSalesOrderRequest();
request.OrderClose = new Entity("orderclose");
request.OrderClose["salesorderid"] = new EntityReference("salesorder", new Guid("YOURGUID"));
request.Status = new OptionSetValue(100001);
service.Execute(request);
100001
是完成状态代码。
如果要处理响应,请使用变量来接收答案。