使用OrderClose类时无法编译代码
我正在尝试构建一个在销售订单上执行某些操作的插件。 我还必须将订单设置为已履行。 我在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);
如何编写代码(并希望有效)?
由于OrderClose
不是类,而是属性的名称,因此无法使用new
创建它。
由于属性是Entity
类型,您需要创建一个Entity
实例,如下所示:
request.OrderClose = new Entity();
OrderClose在程序集“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”将无效,除非引用了正确的程序集。
听起来好像示例代码假定您已为组织生成了早期绑定代码。 如果您在项目中包含早期绑定代码,则此引用将得到解决。 看到这个链接:
https://msdn.microsoft.com/en-us/library/gg327844.aspx
CrmSvcUtil.exe是CRM SDK的一部分。 这是一个如何使用它的模板:
CrmSvcUtil.exe /url:http:////XRMServices/2011/Organization.svc /out:.cs /username: /password: /domain: /namespace: /serviceContextName:
这是一个早期绑定请求,这就是为什么你不能编译,如果你没有使用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
是Complete的状态代码。
如果要处理响应,请使用变量来接收答案。