簡體   English   中英

無法更新CRM中的潛在客戶記錄?

[英]Cannot update lead record in CRM?

我的代碼似乎沒有更新Lead實體。 我創建了一個新的Lead(); 如您在代碼中所見,保存記錄時沒有更新。 我做錯什么了嗎? 這種更新方式與通過執行crmContext.UpdateObject(oLead);進行更新就足夠了。 crmContext.SaveChanges();. 有人可以幫我為什么不更新潛在客戶嗎? 有一個類似的問題,僅涉及基本插件,但我正在更新而不是創建。

        private List<Product> GetSectionAProducts()
    {

        List<Product> products = new List<Product>();
        var QEproduct = new QueryExpression("product");

        // Add all columns to QEproduct.ColumnSet
        QEproduct.ColumnSet.AllColumns = true;

        // Define filter QEproduct.Criteria
        QEproduct.Criteria.AddCondition("productnumber", ConditionOperator.BeginsWith, "MGIP");
        var QEproduct_Criteria_0 = new FilterExpression();
        QEproduct.Criteria.AddFilter(QEproduct_Criteria_0);

        // Define filter QEproduct_Criteria_0
        QEproduct_Criteria_0.AddCondition("capg_billingtimeframe", ConditionOperator.Equal, (int)capg_billingcycletype.Monthly);
        QEproduct_Criteria_0.AddCondition("capg_mincriteria", ConditionOperator.NotNull);
        QEproduct_Criteria_0.AddCondition("capg_maxcriteria", ConditionOperator.NotNull);
        QEproduct_Criteria_0.AddCondition("price", ConditionOperator.NotNull);

        EntityCollection results = this.OrganizationService.RetrieveMultiple(QEproduct);
        if (results.Entities != null)
        {
            // Retrieve all records from the result set.
            foreach (Entity product in results.Entities)
            {
                products.Add(new Product { Id = product.Id, capg_MinCriteria = (int?)product.Attributes["capg_mincriteria"], capg_MaxCriteria = (int?)product.Attributes["capg_maxcriteria"], Price =  (Money)product.Attributes["price"] });


            }
        }

        return products;
    }                    



                var duesproduct = sectionA.Where(o => o.capg_MinCriteria.Value <= dues).ToList().OrderByDescending(o => o.capg_MaxCriteria).FirstOrDefault();
                if (duesproduct != null)
                {
                    Xrm.Lead oLead = new Lead();
                    oLead.Id = this.InputTargetEntity.Id;
                    oLead.capg_CalculatedDuesBilling = new Money(duesproduct.Price == null ? 0 : duesproduct.Price.Value);
                    if (duesproduct.capg_MaxCriteria <= 100000)
                    {
                        oLead.capg_CalculatedDuesBilling = new Money(Math.Round((duesproduct.Price == null ? 0 : duesproduct.Price.Value) * new decimal(0.0290), 2));

                    }

                    if (duesproduct.capg_MaxCriteria <= 235000)
                    {
                        oLead.capg_CalculatedDuesBilling = new Money(Math.Round((duesproduct.Price == null ? 0 : duesproduct.Price.Value) * new decimal(0.0262), 2));
                    }

                    this.OrganizationService.Update(oLead);

                }

我強烈建議您直接使用IOrganizationService.Update更新記錄,而不要使用上下文。 上下文對於查詢非常方便,因為您可以使用LINQ,但是當您通過上下文更新實體時,這些實體可能會作為具有所選所有實體屬性的更新發送到CRM,這可能會導致奇怪的行為,因為這可能會觸發意外的工作流程。 它還可以非常迅速地填充審核歷史記錄。

最好創建一個線索的新實例,並用您只想更新的屬性和ID填充它,然后調用service.Update。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM