我点了这个链接“https://prabirchoudhury.wordpress.com/2013/06/13/retrieve-microsoft-crm-2011-data-using-fetchxml-and-web-service/”并连接到CRM。
在下面的链接上是连接到用户创建的View的代码。
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 :(得分: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;
}