3

私は初めてCRM (version 4.0)で、特定の年に基づいて「yearid」ガイドを返そうとしています(これもエンティティに保存されています)。これまでのところ、次のようになっています。

    public static Guid GetYearID(string yearName)
    {

        ICrmService service = CrmServiceFactory.GetCrmService();

        // Create the query object.
        QueryExpression query = new QueryExpression("year");
        ColumnSet columns = new ColumnSet();
        columns.AddColumn("yearid");
        query.ColumnSet = columns;       

        FilterExpression filter = new FilterExpression();

        filter.FilterOperator = LogicalOperator.And;
        filter.AddCondition(new ConditionExpression
        {
            AttributeName = "yearName",
            Operator = ConditionOperator.Equal,
            Values = new object[] { yearName}
        });

        query.Criteria = filter;

    } 

しかし、私の質問は次のとおりです


。A)Guidを実際に格納するために、これに加えてどのようなコードを実行しますか?
B)これを行うには、QueryExpressionを使用するのが最も効率的な方法ですか?

4

1 に答える 1

2

Re:B)SQLに移行する方が速いかもしれませんが(どれだけかどうかはわかりません)、99%の状況で、QueryExpressionはパフォーマンスの点で完全に受け入れられると思いました。

Re:A)あなたはかなり近いです、私は以下のコードを完成させました。

public static Guid GetYearID(string yearName) 
{
    ICrmService service = CrmServiceFactory.GetCrmService(); 

    // Create the query object. 
    QueryExpression query = new QueryExpression("year"); 

    //No need to ask for the id, it is always returned
    //ColumnSet columns = new ColumnSet(); 
    //columns.AddColumn("yearid");
    //query.ColumnSet = columns;

    FilterExpression filter = new FilterExpression(); 

    filter.FilterOperator = LogicalOperator.And; 
    filter.AddCondition(new ConditionExpression 
    { 
        AttributeName = "yearName", 
        Operator = ConditionOperator.Equal, 
        Values = new object[] { yearName} 
    }); 

    query.Criteria = filter; 

    //We have to use a retrieve multiple here
    //In theory we could get multiple results but we will assume we only ever get one
    BusinessEntityCollection years = service.RetrieveMultiple(query);

    DynamicEntity year = (DynamicEntity)years.BusinessEntities.First();

    return ((Guid)year["yearid"]);
}  
于 2012-10-18T12:26:29.957 に答える