【问题标题】:Retrieving a single Guid in CRM 4.0在 CRM 4.0 中检索单个 Guid
【发布时间】:2012-10-18 10:48:33
【问题描述】:

我是 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 是最有效的方法吗?

【问题讨论】:

    标签: c# dynamics-crm dynamics-crm-4


    【解决方案1】:

    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"]);
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多