gpt4 book ai didi

powershell - EntityReference中的DynamicsCRM QueryExpression条件

转载 作者:行者123 更新时间:2023-12-03 01:13:02 25 4
gpt4 key购买 nike

我正在使用PowerShell中的CRM SDK,尝试查询链接到特定帐户名称的契约(Contract),如果我对帐户GUID进行查询,则会得到结果,但我想对EntityReference对象中的名称进行查询,而不是对例如,GUID(这很好用):

$query = new-object Microsoft.Xrm.Sdk.Query.QueryExpression('new_contract')
$query.Criteria.AddCondition('new_account', [Microsoft.Xrm.Sdk.Query.ConditionOperator]::Equal, $AccountGuid)

以上结果看起来像这样:
Key                 Value
--- -----
createdby Microsoft.Xrm.Sdk.EntityReference
createdon 21/10/2014
modifiedby Microsoft.Xrm.Sdk.EntityReference
modifiedon 28/02/2016
modifiedonbehalfby Microsoft.Xrm.Sdk.EntityReference
new_account Microsoft.Xrm.Sdk.EntityReference
[...] [...]
new_account属性为:
Id            : dab2909d-6149-e411-93fc-005056af5481
LogicalName : account
Name : CustomerNameText
KeyAttributes : {}
RowVersion :
ExtensionData : System.Runtime.Serialization.ExtensionDataObject

我想使用 new_contract名称IKEi new_account创建一个 CustomerNameText查询

我试过了:
  $query.Criteria.AddCondition('new_account',([Microsoft.Xrm.Sdk.EntityReference].Attributes['new_account']).Name, [Microsoft.Xrm.Sdk.Query.ConditionOperator]::Like, $AccountName)

但它不起作用,出现以下错误:
Exception calling "RetrieveMultiple" with "1" argument(s): "Link entity with name or alias new_account is not found"
At line:2 char:5
+ $temp = $service.RetrieveMultiple($query);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FaultException`1

我希望我很清楚,但如果没有,请提出任何问题。

最好使用Powershell代码,也可以使用C#

谢谢...

最佳答案

您不能将QueryExpression条件用于EntityReference名称。使用EntityReference,您只能使用Guid

如果要按名称查询,可以在QueryExpression中使用LinkEntity。您将不得不使用LinkCriteria

var q = new QueryExpression();
q.EntityName = "new_contract";
q.ColumnSet = new ColumnSet();
q.ColumnSet.Columns.Add("new_contractid");

q.LinkEntities.Add(new LinkEntity("new_contract", "account", "new_account", "accountid", JoinOperator.Inner));
q.LinkEntities[0].Columns.AddColumns("accountid", "name");
q.LinkEntities[0].EntityAlias = "temp";
q.LinkEntities[0].LinkCriteria.AddCondition("name", ConditionOperator.Equal, "yourAccountName");

P.S 如果以上代码段对您不起作用。并且您想通过 accountName进行检索。为此,请使用帐户的 Guid使用您现有的代码。但是首先您必须检索 accountGuid by name。在这种情况下
  public Guid getAccountGuidByName(string name)
{

QueryExpression accountQuery = new QueryExpression("account");
accountQuery.Criteria.AddCondition("name", ConditionOperator.Equal, "yourAccountName");
EntityCollection entCol = Service.RetrieveMultiple(accountQuery);
if (entCol.Entities.Count > 0)
{
return entCol.Entities[0].Id;
}
return Guid.Empty;

}

例如,我不知道如何在Powershell中调用函数等,但是我正在提供C#代码,正如您所说的,如果在C#中使用就可以了,然后使用它,如下所示:
$query = new-object Microsoft.Xrm.Sdk.Query.QueryExpression('new_contract')
$query.Criteria.AddCondition('new_account', [Microsoft.Xrm.Sdk.Query.ConditionOperator]::Equal, getAccountGuidByName("yourAccountName"));

关于powershell - EntityReference中的DynamicsCRM QueryExpression条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com