2016-11-22 72 views

回答

0

爲什麼你想要添加對CRM Web服務的引用?假設你想從服務器端代碼訪問CRM,你需要做的是:

  1. 添加對核心CRM SDK組件(Microsoft.Crm.Sdk.Proxy.dll和Microsoft.Xrm.Sdk.dll )。你可以從可下載的SDK中獲得它們,或者只需添加「Microsoft.CrmSdk.CoreAssemblies」NuGet包。
  2. 完成此操作後,您將能夠編寫與CRM「交談」的代碼。但是你缺少的是實際的「連接」。有幾種獲取方法,但最簡單的方法是使用Xrm Tooling助手類,如下所述 - https://msdn.microsoft.com/en-us/library/mt608573.aspx。您需要引用所需的程序集或使用「Microsoft.CrmSdk.XrmTooling.CoreAssembly」NuGet程序包。

完成這一切之後,您將能夠成功地針對Dynamics CRM進行編碼。

CrmServiceClient crmSvc = new CrmServiceClient(ConfigurationManager.ConnectionStrings["MyCRMServer"].ConnectionString); 

IOrganizationService orgService = crmSvc.OrganizationServiceProxy; 

// Who am I? 
WhoAmIResponse whoAmIResp = orgService.Execute(new WhoAmIRequest()) as WhoAmIResponse; 
Guid myUserId = whoAmIResp.UserId; 

// Get all accounts starting with 'A' 
QueryExpression query = new QueryExpression("account"); 
query.ColumnSet = new ColumnSet("accountid", "name"); 
query.Criteria.AddCondition("name", ConditionOperator.BeginsWith, "a"); 

EntityCollection ecoll = orgService.RetrieveMultiple(query); 

foreach(Entity account in ecoll.Entities) 
{ 
    if(account.Attributes.Contains("name")) 
    { 
     Console.WriteLine((string)account["name"]); 
    } 
} 

// Update some account 
Entity accountToUpdate = new Entity("account"); 
accountToUpdate["accountid"] = new Guid("_some_guid_here"); 
accountToUpdate["name"] = "new name"; 

orgService.Update(accountToUpdate); 

如果你想使用類型安全的方法,你需要生成一個代理類 - 喜歡這裏描述:https://msdn.microsoft.com/en-us/library/gg327844.aspx

之後,你就可以這樣寫代碼:

DataContext data = new DataContext(orgService); 
// DataContext is the name of the service context, as defined in the CrmScv tool 

var myAccountData = (from a in data.AccountSet 
         where a.Address1_Telephone1 == "12312313" 
         select new 
         { 
          a.AccountId, 
          a.Name, 
          a.EMailAddress1, 
          a.PrimaryContactId 
         }).First(); 

Contact contactToUpdate = new Contact() 
{ 
    ContactId = myAccountData.PrimaryContactId.Id, 
    EMailAddress1 = myAccountData.EMailAddress1 
}; 

orgService.Update(contactToUpdate); 

...這是更好,更不容易出錯。

0

從外觀上來看你正嘗試通過Dynamics 365上下文之外的應用程序進行身份驗證。如果您想以這種方式使用Web API進行身份驗證,則必須使用OAuth和aut連接到Microsoft Dynamics 365 Web服務使用ADAL

henticate

https://msdn.microsoft.com/en-us/library/gg327838.aspx

下面是關於如何做一個演練它

https://msdn.microsoft.com/en-us/library/mt622431.aspx

附加說明:

如果使用CRM 2013 SDK您可能需要更新到6.1.2 for Dynamics 365支持

https://blogs.msdn.microsoft.com/crm/2017/02/01/dynamics-365-sdk-backwards-compatibility/