【问题标题】:How to Matching GUID from Database Sources with GUID from Queryexpression如何将来自数据库源的 GUID 与来自 Queryexpression 的 GUID 匹配
【发布时间】:2016-08-19 08:03:46
【问题描述】:

我要求每 30 分钟创建一次调度程序。此调度程序包含一个程序,它将获取今天创建的记录(包括 GUID),然后使用 Web 服务插入到 Dynamics CRM。要从 SQL Server 数据库中获取记录,我使用以下查询:

SELECT * FROM new_crmtable WHERE DATEDIFF(day, CreatedOn, GetDate()) = 0

因为这个调度器每 30 分钟运行一次。每次执行此程序时,都会查看今天创建的新记录和旧记录。 例如,今天下午 12.25 点创建了一条名为 A 的记录。该程序第一次执行是在中午 12 点 30 分。然后在 12.45 PM。创建了一个名为 B 的新记录。当程序在下午 13 点再次执行时。该程序同时获取记录 A 和 B。在 Dynamics CRM 中创建记录期间,它会给出一条错误消息。因为记录 A 已经创建。错误表明您无法使用重复的 GUID 创建记录(请记住,我还从 SQL Server 数据库中获取 GUID,并使用其 GUID 插入 Dynamics CRM)

为避免错误,我需要检查记录是否已在 CRM 上创建。要从 Dynamics CRM 获取 GUID,我使用 QueryExpression。这是我的代码:

try
            {
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        try
                        {
                            Entity rs = new Entity("new_troubleticket");


                            OptionSetValue option = new OptionSetValue(100000001);
                            rs.Attributes.Add("new_systemsource", option);

                            Guid ticketid = new Guid(dt.Rows[i][0].ToString());
                            rs.Id = ticketid;


                            //FIRSTNAME
                            if (!string.IsNullOrEmpty(dt.Rows[i][1].ToString()))
                            {
                                rs["new_subject"] = dt.Rows[i][1].ToString();


            }
                                else
                                {
                                    rs["new_subject"] = null;
                                }

Queryexpression query = new QueryExpression { Entityname = "new_customentity", 
Columnset = new Columnset("new_customentityid")};
query.Criteria.AddCondition("CreatedOn", ConditionalOperator.Equal, Datetime.Now);

Entity Collection result = service.RetrieveMultiple(query)

你能告诉我如何将 SQL Server 数据库中的 GUID 与 Queryexpression 中的 GUID 匹配吗?

【问题讨论】:

    标签: c# dynamics-crm-2011 dynamics-crm microsoft-dynamics


    【解决方案1】:

    只需添加一个条件以按 id 过滤:

    var g = Guid.NewGuid() //Replace this with your actual Id from the query
    Queryexpression query = new QueryExpression { Entityname = "new_customentity", 
    Columnset = new Columnset("new_customentityid")};
    query.Criteria.AddCondition("new_customentityid", ConditionalOperator.Equal, g);
    
    Entity Collection result = service.RetrieveMultiple(query)
    

    【讨论】:

    • 嗨乔迪,感谢您的回答。通过使用您的查询,这意味着我从 crm 中选择与源相同的 GUID。如果在 CRM 中找不到 GUID,我想在 crm 中创建记录的条件如何?
    • 这实际上是 .AddCondition => 它只有在存在时才会返回记录。因此,您现在可以根据 result.Entities.Count == 0 创建与否
    • 所以它会是这样的: if(result.Entities.count==0){ //查询创建记录}
    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多