2016-11-18 130 views
0

我跟隨此鏈接「https://prabirchoudhury.wordpress.com/2013/06/13/retrieve-microsoft-crm-2011-data-using-fetchxml-and-web-service/」並連接到CRM。C#代碼連接CRM保存視圖

在下面的鏈接是連接到用戶創建的視圖的代碼。

string fetchXml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' count='100'> 
<entity name='account'> 
<attribute name='ownerid' /> 
<attribute name='name' /> 
<attribute name='accountnumber' /> 
<attribute name='accountid' /> 
<order attribute='accountnumber' descending='true' /> 
<link-entity name='systemuser' to='owninguser' alias='mainuser'> 
<attribute name='systemuserid'/> 
<attribute name='domainname' /> 
<attribute name='fullname' /> 
</link-entity > 
</entity> 
</fetch>"; 

如果你看到我必須通過XML代碼從CRM中獲取數據,但是我只是想通過視圖名稱和csv文件而不是傳遞XML代碼的形式獲取數據。我在Powershell中做了同樣的事情,但我需要在C#代碼中做同樣的事情。

我只想傳遞視圖名稱的原因是因爲明天用戶將在視圖中進行任何修改,並且如果用戶進行任何更改,我不必觸摸代碼,因此我需要使其成爲動態的,其次獲取數據如何在緩衝區上創建csv文件(無需在機器上進行物理創建),然後導出到任何基於雲的服務。

+0

你可能對[Reflection]感興趣(https://msdn.microsoft.com/en-in/library/mt656691.aspx) –

+1

@AmitKumarGhosh:爲什麼要反思?他只需要將他的對象「序列化」爲XML並調用適用的Web服務? – garfbradaz

+0

@ harshu288您可以提供關於您如何與Web服務交流的代碼。我知道你提供了鏈接,但是你的實現細節會很有幫助。 – garfbradaz

回答

1

您正在詢問很多代碼並且沒有顯示您自己的代碼。請查看這篇文章:How to Ask

爲了讓您一開始,這裏,將讓你從保存的視圖中的FetchXML的方法,基於視圖的名字和單位名稱:

using Microsoft.Xrm.Sdk; 
using Microsoft.Xrm.Sdk.Query; 
using Microsoft.Xrm.Tooling.Connector; 
using System.Linq; 

private string getFetchXml(IOrganizationService svc) 
{ 
    var query = new QueryExpression 
    { 
     EntityName = "userquery", 
     ColumnSet = new ColumnSet("userqueryid", "name", "fetchxml"), 
     Criteria = new FilterExpression 
     { 
      FilterOperator = LogicalOperator.And, 
      Conditions = 
      { 
       new ConditionExpression 
       { 
        AttributeName = "name", 
        Operator = ConditionOperator.Equal, 
        Values = {"My View"} 
       }, 
       new ConditionExpression 
       { 
        AttributeName = "returnedtypecode", 
        Operator = ConditionOperator.Equal, 
        Values = { "account" } 
       } 
      } 
     } 
    }; 

    var result = svc.RetrieveMultiple(query); 
    var view = result.Entities.FirstOrDefault(); 
    var fetchXml = view.GetAttributeValue<string>("fetchxml"); 
    return fetchXml; 
}