4

C# プラグインを介して MS CRM 2011 ビジネス ユニットから特定のロールを持つユーザーを取得しようとしていますが、これに対して正しいクエリを作成することに固執しました。ロールは関係を介してユーザーにリンクされてN:Nおり、この場合のクエリの例を見つけるのに苦労しています。

今のところ、私は次のことを思いつきました:

var entity = organizationService.Retrieve(entityName, entityId, new ColumnSet(new string[] { "new_unit" }));

if (entity.Attributes.Keys.Contains("new_unit"))
{
    QueryExpression query = new QueryExpression("systemuser");

    query.ColumnSet = new ColumnSet(new string[] { "systemuserid" });
    query.Distinct = true;
    query.Criteria = new FilterExpression();
    query.Criteria.AddCondition("businessunitid", ConditionOperator.Equal, ((EntityReference)entity.Attributes["new_unit"]).Id);
}

systemuser特定の役割と事業単位を持つユーザーを取得するために、どのエンティティにリンクする必要があるか、どのように目標を達成するかがわかりません。

役割の名前は簡単に取得できますが、Guid次に何をすべきでしょうか?

4

1 に答える 1

4

メソッドを使用してAddLink結合を実行する必要があります。

これはあなたが必要とするものです:

QueryExpression query = new QueryExpression("systemuser");

query.ColumnSet = new ColumnSet(new string[] { "systemuserid" });
query.Distinct = true;
query.Criteria = new FilterExpression();
query.Criteria.AddCondition("businessunitid", ConditionOperator.Equal, ((EntityReference)entity.Attributes["new_unit"]).Id);
query.AddLink("systemuserroles", "systemuserid", "systemuserid").
    AddLink("role","roleid", "roleid").
        LinkCriteria.AddCondition("name", ConditionOperator.Equal, "MyRoleName");

var users = organizationService.RetrieveMultiple(query);

また、RoleId を簡単に取得できる場合は、Role エンティティへの [追加] リンクをスキップして、LinkCriteria 条件を SystemUserRoles エンティティに追加するだけです。

QueryExpression query = new QueryExpression("systemuser");

query.ColumnSet = new ColumnSet(new string[] { "systemuserid" });
query.Distinct = true;
query.Criteria = new FilterExpression();
query.Criteria.AddCondition("businessunitid", ConditionOperator.Equal, ((EntityReference)entity.Attributes["new_unit"]).Id);
query.AddLink("systemuserroles", "systemuserid", "systemuserid").
    LinkCriteria.AddCondition("roleid", ConditionOperator.Equal, roleIdGuid);

var users = organizationService.RetrieveMultiple(query);
于 2013-03-07T13:33:58.903 に答える