我正在尝试从Dynamics CRM获取特定查询表达式的FetchXML查询。我已经在C#项目中使用XRM SDK进行了如下操作。
string connectionStr = @"Server=https://mycompany.com/XRMServices/2011/Organization.svc; Username=theUserName; Password=pwd";
Microsoft.Xrm.Client.CrmConnection conn = Microsoft.Xrm.Client.CrmConnection.Parse(connectionStr);
var service = new Microsoft.Xrm.Client.CrmOrganizationServiceContext(conn);
var query = new QueryExpression();
QueryExpressionToFetchXmlRequest req = new QueryExpressionToFetchXmlRequest();
query.EntityName = "my_entity";
query.ColumnSet = new ColumnSet("_accountnumber", "_id");
FilterExpression filter = new FilterExpression();
filter.Conditions.Add(new ConditionExpression("_Oactivedate", ConditionOperator.NotNull));
filter.Conditions.Add(new ConditionExpression("_Oinactivedate", ConditionOperator.Null));
filter.Conditions.Add(new ConditionExpression("_state", ConditionOperator.Equal, 0));
FilterExpression filter1 = new FilterExpression(LogicalOperator.Or);
var filter2 = new FilterExpression(LogicalOperator.And);
filter2.Conditions.Add(new ConditionExpression("_lastname", ConditionOperator.Equal, lastName));
filter2.Conditions.Add(new ConditionExpression("_accountnumber", ConditionOperator.Equal, accountId));
var filter3 = new FilterExpression(LogicalOperator.And);
filter3.Conditions.Add(new ConditionExpression("_accountactivedate", ConditionOperator.NotNull));
filter3.Conditions.Add(new ConditionExpression("_accountinactivedate", ConditionOperator.Null));
filter1.AddFilter(filter2);
filter1.AddFilter(filter3);
filter.AddFilter(filter1);
query.Criteria = filter;
req.Query = query;
QueryExpressionToFetchXmlResponse resp = (QueryExpressionToFetchXmlResponse)service.Execute(req);
//fetchxml string
string myfetch = resp.FetchXml;
我的要求不允许.Net DLL,因此我想在JS中这样做。我试着看看JS SDK,它不像C#那样友好(也许它只是我:)。我真的很感激任何能够尝试编写上述代码的JS等价物的人,或者指导一个可以帮助我自己解决问题的好材料。我的主要兴趣是从动态强类型QueryExpression对象生成FetchXml查询。谢谢!
您应该能够在Advanced中构建查询并从那里下载fetchxml以在JavaScript中使用。 Read more
您可以使用XrmToolBox - FetchXml Builder以及for building queries(这也会给SQL,QueryExpression等效),然后使用此online formatter tool生成语言兼容输出
可以在this blog中找到在JavaScript中使用fetchxml的代码示例。例如:
var encodedFetchXml = encodeURI(fetchContact);
var reqURL = clientURL + “/api/data/v8.2/contacts?fetchXml=” + encodedFetchXml;
var req = new XMLHttpRequest();
req.open(“GET”, reqURL, false);
QueryExpression,FetchXml,LINQ都是编写相同查询的选择。如您所知 - QueryExpression不能在JavaScript中使用,但fetchxml可以在C#和JS中使用。
除了@ Arun的优秀答案之外,另一种可能性是将您的逻辑保留在C#中并将其作为custom Action在系统中注册,然后call from JavaScript。