使用OrderClose类时无法编译代码

时间:2015-02-25 21:35:32

标签: c# dynamics-crm crm

我正在尝试构建一个在销售订单上执行某些操作的插件。我还必须将订单设置为已履行。我在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);

如何编写代码(希望能够正常工作)?

4 个答案:

答案 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是完成状态代码。

如果要处理响应,请使用变量来接收答案。