如何在Dynamics 365 SDK中检索没有Guid的实体?

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

好吧,我有这个命令:IOrganizationService.Retrieve(String entityName, Guid ID, ColumnSet columnSet)参考:IOrganizationService

我尝试了SDK代码示例,但是当创建记录时,使用Guid创建检索信息,如下所示:Guid _accountId = orgService.Create(account);

我想使用帐户(实体)的名称获取此Guid,我该怎么做?

c# dynamics-crm microsoft-dynamics dynamics-365 dynamics-crm-365
3个回答
6
投票

你必须使用RetrieveMultiple方法和QueryExpression来实现它。例如,下面的MSDN code example是自我解释,以获得与lastname = “Brown”的联系

//  Query using ConditionExpression and FilterExpression
ConditionExpression condition1 = new ConditionExpression();
condition1.AttributeName = "lastname";
condition1.Operator = ConditionOperator.Equal;
condition1.Values.Add("Brown");            

FilterExpression filter1 = new FilterExpression();
filter1.Conditions.Add(condition1);

QueryExpression query = new QueryExpression("contact");
query.ColumnSet.AddColumns("firstname", "lastname");
query.Criteria.AddFilter(filter1);

EntityCollection result1 = _serviceProxy.RetrieveMultiple(query);
Console.WriteLine();Console.WriteLine("Query using Query Expression with ConditionExpression and FilterExpression");
Console.WriteLine("---------------------------------------");
foreach (var a in result1.Entities)
{
    Console.WriteLine("Name: " + a.Attributes["firstname"] + " " + a.Attributes["lastname"]);
}

查询表达式用于检索多个记录的方法,例如IOrganizationService.RetrieveMultiple方法,在对查询表达式指定的结果集执行操作的消息中,如BulkDeleteRequest,以及特定记录的ID不是众所周知。

Reference


2
投票

我使用Query获得了解决方案:

        //Query for the GUID of the Account using Account Name
        QueryExpression query = new QueryExpression("account");
        string[] cols = { "accountid", "name" };
        query.Criteria = new FilterExpression();
        query.Criteria.AddCondition("name", ConditionOperator.Equal, "Account Name");
        query.ColumnSet = new ColumnSet(cols);
        var account = Service.RetrieveMultiple(query);
        //Casting the reference to GUID
        Guid accountId = (Guid)account[0].Attributes["accountid"];

这将使用帐户名称返回Guid信息。


1
投票

查询表达式是一种选择。我发现效率最低。寻找更常用的方法:

  • 获取Xml,查询效率更高,但开发时间更长。这是获得计数,总和或复杂标准的首选方法:qazxsw poi
  • 早期限制,查询是最快的开发,更加用户友好,但效率较低。这是使用id或name之类的简单criteras获取数据的首选方法:https://msdn.microsoft.com/en-us/library/gg328332.aspx
© www.soinside.com 2019 - 2024. All rights reserved.