如何将来自数据库源的GUID与来自Queryexpression的GUID相匹配

时间:2016-08-19 08:03:46

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

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

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

因为这个shceduler,每30分钟运行一次。每次执行此程序时,都需要创建今天创建的新记录和旧记录。 例如,今天12.25 PM创建了一个名为A的记录。这个程序第一次执行是在下午12:30。然后在下午12点45分。创建了一个名为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进行匹配吗?

1 个答案:

答案 0 :(得分:0)

只需添加条件即可按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)