我正在为Dynamics CRM 2013开发。我尝试更改Quote的状态,但似乎找不到QuoteState。 我尝试使用QuoteState.Active,但我收到错误:“当前上下文中不存在名称'QuoteState'”。 这些是我使用的命名空间:
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Crm.Sdk;
using Microsoft.Xrm.Client;
using Microsoft.Xrm.Client.Services;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xrm;
我错过了什么名称空间或我做错了什么?
编辑:
这是我尝试使用它的功能:
/// <summary>
/// Activates the Quote
/// </summary>
/// <param name="quote">The quote</param>
/// <param name="xrm">The Xrm Service Context</param>
private static void ActivateQuote(Quote quote, XrmServiceContext xrm)
{
SetStateRequest activateQuote = new SetStateRequest()
{
EntityMoniker = quote.ToEntityReference(),
State = new OptionSetValue((int)QuoteState.Active),
Status = new OptionSetValue(3)
};
SetStateResponse activateResponse = (SetStateResponse)xrm.Execute(activateQuote);
// Save
xrm.SaveChanges();
Console.WriteLine("Activated the quote...");
}
如果我使用State = new OptionSetValue(1)它可以工作,所以只是QuoteState丢失了。
答案 0 :(得分:1)
QuoteState
是使用早期编程时创建的自定义枚举。
这意味着您需要从SDK运行代码生成工具(CrmSvcUtil.exe
)。
http://technet.microsoft.com/en-us/library/gg327844.aspx
仅供参考,这将是该工具生成的枚举:
[System.Runtime.Serialization.DataContractAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.3339")]
public enum QuoteState
{
[System.Runtime.Serialization.EnumMemberAttribute()]
Draft = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
Active = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
Won = 2,
[System.Runtime.Serialization.EnumMemberAttribute()]
Closed = 3,
}