C# MS CRM DateTime字段在日期已存在时抛出错误(c&MVC)
当试图以编程方式更新已存储日期的DateTime字段时,我遇到了一个问题 我得到的错误是: System.InvalidOperationException:生成XML文档时出错。-->System.ArgumentException:不支持类型为“CrmDateTimeProperty”的值。 参数名称:value 这是执行CRM更新的代码:C# MS CRM DateTime字段在日期已存在时抛出错误(c&MVC),c#,asp.net-mvc-3,dynamics-crm,C#,Asp.net Mvc 3,Dynamics Crm,当试图以编程方式更新已存储日期的DateTime字段时,我遇到了一个问题 我得到的错误是: System.InvalidOperationException:生成XML文档时出错。-->System.ArgumentException:不支持类型为“CrmDateTimeProperty”的值。 参数名称:value 这是执行CRM更新的代码: public bool UpdatePromptList(PromptList list) { DynamicEntit
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);
}
}
在此方面的任何帮助都将不胜感激。如果您想更新为null的日期,您应该更改更新方法,使其在属性为null时不删除属性,而是将其清空,否则该属性不会更新-
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;
}
这将解决您遇到的问题