Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在CRM Dynamics中查看LINQ生成的查询表达式?_Linq_Dynamics Crm - Fatal编程技术网

有没有办法在CRM Dynamics中查看LINQ生成的查询表达式?

有没有办法在CRM Dynamics中查看LINQ生成的查询表达式?,linq,dynamics-crm,Linq,Dynamics Crm,考虑到CRM Dynamics中的LINQ查询被转换为查询表达式()的事实: […]OrganizationServiceContext类包含一个底层LINQ 从Microsoft Visual C翻译LINQ查询的查询提供程序# 或将Microsoft Visual Basic.NET语法转换为所使用的查询API Microsoft Dynamics CRM。[……] 是否有办法查看生成的查询表达式(因为可以在Linq to SQL或Linq to Entities中查看生成的SQL查询)?您

考虑到CRM Dynamics中的LINQ查询被转换为查询表达式()的事实:

[…]OrganizationServiceContext类包含一个底层LINQ 从Microsoft Visual C翻译LINQ查询的查询提供程序# 或将Microsoft Visual Basic.NET语法转换为所使用的查询API Microsoft Dynamics CRM。[……]


是否有办法查看生成的查询表达式(因为可以在Linq to SQL或Linq to Entities中查看生成的SQL查询)?

您可以使用反射获取查询对象,然后将其转换为FetchXML查询以获取可打印查询。这将适用于早期绑定和后期绑定查询

发件人:

或者,您可以使用Fiddler捕获SOAP消息中发送的实际查询文本。我以前做过这件事,没有发现它比FetchXml更有价值

var connectionString = @"SET YOUR CONNECTION STRING";

var service = new CrmServiceClient(connectionString);   

using (var xrm = service.OrganizationServiceProxy)
{

    OrganizationServiceContext orgContext =
                new OrganizationServiceContext(xrm);

    var query = from c in orgContext.CreateQuery("contact")
                join a in orgContext.CreateQuery("account")
                    on c["contactid"] equals a["primarycontactid"]
                where (String)c["lastname"] == "Wilcox" ||
                    (String)c["lastname"] == "Andrews"
                where ((String)a["address1_telephone1"]).Contains("(206)")
                    || ((String)a["address1_telephone1"]).Contains("(425)")
                select new
                {
                    Contact = new
                    {
                        FirstName = c["firstname"],
                        LastName = c["lastname"]
                    },
                    Account = new
                    {
                        Address1_Telephone1 = a["address1_telephone1"]
                    }
                };

    IQueryProvider queryProvider = query.Provider;      

    MethodInfo translateMethodInfo = queryProvider.GetType().GetMethod("Translate");
    QueryExpression queryEx = (QueryExpression)translateMethodInfo.Invoke(queryProvider, new object[] { query.Expression });        

    QueryExpressionToFetchXmlRequest reqConvertToFetchXml = new QueryExpressionToFetchXmlRequest { Query = queryEx };
    QueryExpressionToFetchXmlResponse respConvertToFetchXml = (QueryExpressionToFetchXmlResponse)xrm.Execute(reqConvertToFetchXml);

    Console.WriteLine("To FetchXML:" + Environment.NewLine + Environment.NewLine);
    Console.WriteLine(respConvertToFetchXml.FetchXml);