2011-05-26 41 views
1

我在嘗試以編程方式更新已存儲日期的DateTime字段時遇到問題。當日期已存在時,MS CRM DateTime字段會引發錯誤(c#&MVC)

是我得到的錯誤是:

System.InvalidOperationException:有一個錯誤生成XML文檔。 ---> System.ArgumentException:不支持類型'CrmDateTimeProperty'的值。 參數名:價值

這是執行CRM更新代碼:

public bool UpdatePromptList(PromptList list) 
    { 
     DynamicEntity c = crmService.RetrieveDynamicEntity("ntup1_promptlist", list.PromptListId); 

     if (c != null) 
     { 
      c.UpdateBoolean("examplebooleanfield", list.booleanField); 
      c.UpdateDateTime("exampledatefield", list.dateField); 
      c.UpdateString("examplestringfield", list.stringField);  

      try 
      { 
       crmService.Update(c); 
      } 
      catch (SoapException) 
      { 
       return false; 
      } 
     } 
    } 

這裏是驗證日期時間值的代碼將被傳遞到CRM:

public static CrmDateTime FromUser(DateTime userTime) 
    { 
     return new CrmDateTime(string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0:s}", userTime)); 
    } 


    public static void UpdateDateTime(this DynamicEntity entity, string property, DateTime? date) 
    { 
     if (date == null) 
     { 
      if (entity.Properties.Contains(property)) 
      { 
       entity.Properties.Remove(property); 
      } 
      return; 
     } 

     CrmDateTime crmDate = FromUser(date.Value); 
     CrmDateTimeProperty crmProp = new CrmDateTimeProperty(property, crmDate); 

     if (entity.Properties.Contains(property)) 
     { 
      entity.Properties[property] = crmProp; 
     } 
     else 
     { 
      entity.Properties.Add(crmProp); 
     } 
    } 

任何幫助,將不勝感激。

回答

2

如果您想更新的日期,當它爲空,你應該改變你的更新方法,如果它是空不落的財產,而是空出來,否則沒有更新將出現該屬性 -

CrmDateTime myDateTime = new CrmDateTime(); 
myDateTime.IsNull = true; 
myDateTime.IsNullSpecified = true; 

它看起來像是你的錯誤發生,因爲你正在設置屬性值爲CrmDateTimeProperty,當它期望一個CrmDateTime。

改變這一點 -

if (entity.Properties.Contains(property)) 
{ 
    entity.Properties[property] = crmProp; 
} 

本 -

if (entity.Properties.Contains(property)) 
{ 
    entity.Properties[property] = crmDate; 
} 

,並應解決你碰到的問題。

+0

修復它,謝謝。 – BigBadDom 2011-05-30 18:15:16

相關問題