连接 CRM 保存视图的 C# 代码

问题描述 投票:0回答:1

我点击此链接“https://prabirchoudhury.wordpress.com/2013/06/13/retrieve-microsoft-crm-2011-data-using-fetchxml-and-web-service/”并连接到 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 文件(无需在计算机上物理创建),然后导出到任何基于云的服务。

c# dynamics-crm crm
1个回答
2
投票

这里有一个方法,可以根据视图名称和实体名称从保存的视图中获取 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.