我有要求每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?
斐伊川爾迪,謝謝您的回答。通過使用你的查詢,它的意思是我從crm中選擇來自源的GUID。如果在CRM中找不到GUID,那麼我想在CRM中創建記錄的條件如何? –
這實際上就是.AddCondition =>的目的。只有存在時它纔會返回記錄。所以你可以現在如果你應該創建或不基於result.Entities.Count == 0 – Jordi
所以它會是這樣的:if(result.Entities.count == 0){//查詢創建記錄} –