2016-08-19 62 views
0

我有要求每30分鐘創建一次調度程序。該調度程序包含一個程序,該程序將採用今天創建的記錄(包括GUID),然後使用webservices插入到Dynamics CRM中。要從SQL Server數據庫中取記錄,我使用以下查詢:如何使用來自Queryexpression的GUID匹配數據庫源中的GUID

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

因爲這個計算器每30分鐘運行一次。每次這個程序執行時,都要考慮今天創建的新記錄和舊記錄。 例如,今天12.25 PM創建了一條名爲A的記錄。這是第一次執行該程序是在下午12點30分。然後在下午12點45分。創建了一個名爲B的新記錄。當程序在13:00重新執行時。該程序同時記錄A和B.在Dynamics CRM中創建記錄期間,它會顯示錯誤消息。因爲記錄A已經創建。該erros說,你不能創建記錄與重複的GUID(記住,我也從SQL Server數據庫採取GUID,並插入動態CRM與其GUID)

爲了避免錯誤,我需要檢查記錄是否已經在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,與GUID從Queryexpression?

回答

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) 
+0

斐伊川爾迪,謝謝您的回答。通過使用你的查詢,它的意思是我從crm中選擇來自源的GUID。如果在CRM中找不到GUID,那麼我想在CRM中創建記錄的條件如何? –

+0

這實際上就是.AddCondition =>的目的。只有存在時它纔會返回記錄。所以你可以現在如果你應該創建或不基於result.Entities.Count == 0 – Jordi

+0

所以它會是這樣的:if(result.Entities.count == 0){//查詢創建記錄} –