C# MS CRM 2011 effectiveintervalend在数据库中不正确
我不知道为什么,但存储业务闭包的日历规则在UI和DB中有所不同。例如,如果您使用参数start=01.01.2014和End=02.01.2014以及days=2创建业务关闭,那么在CRM DB(表[CalendarRuleBase])中,您将获得C# MS CRM 2011 effectiveintervalend在数据库中不正确,c#,dynamics-crm-2011,C#,Dynamics Crm 2011,我不知道为什么,但存储业务闭包的日历规则在UI和DB中有所不同。例如,如果您使用参数start=01.01.2014和End=02.01.2014以及days=2创建业务关闭,那么在CRM DB(表[CalendarRuleBase])中,您将获得 effectiveintervalstart = 01.01.2014, effectiveintervalend = 03.01.2014. 使用SDK检索数据时,您将得到相同的结果: Entity org = service.Retrie
effectiveintervalstart = 01.01.2014, effectiveintervalend = 03.01.2014.
使用SDK检索数据时,您将得到相同的结果:
Entity org = service.Retrieve("organization", context.OrganizationId, new Microsoft.Xrm.Sdk.Query.ColumnSet("businessclosurecalendarid"));
QueryExpression q = new QueryExpression("calendar");
q.ColumnSet = new ColumnSet(true);
q.Criteria = new FilterExpression();
q.Criteria.AddCondition(new ConditionExpression("calendarid", ConditionOperator.Equal, org["businessclosurecalendarid"].ToString()));
Entity businessClosureCalendar = service.RetrieveMultiple(q).Entities[0];
if (businessClosureCalendar != null)
{
return businessClosureCalendar.GetAttributeValue<EntityCollection>("calendarrules").Entities.ToList();
}
Entity org=service.Retrieve(“组织”,context.OrganizationId,新的Microsoft.Xrm.Sdk.Query.ColumnSet(“businessclosurecalendarid”);
QueryExpression q=新的QueryExpression(“日历”);
q、 ColumnSet=新的ColumnSet(true);
q、 条件=新筛选器表达式();
q、 Criteria.AddCondition(新的ConditionExpression(“calendarid”,ConditionOperator.Equal,org[“businessclosurecalendarid”].ToString());
实体businessClosureCalendar=service.RetrieveMultiple(q).Entities[0];
如果(businessClosureCalendar!=null)
{
返回businessClosureCalendar.GetAttributeValue(“calendarrules”).Entities.ToList();
}
你知道为什么会这样吗?effectiveintervalend是否总是比UI enddate值大一天?Dynamics CRM数据库中的日期以UTC格式存储,CRM UI会自动将其转换为本地时间,以便用户看到正确的时间
使用SDK检索datetime字段时,值不会自动转换,因此需要使用
ToLocalTime()
根据进行SDK调用的用户的时区获取值。查看此答案以及其他类似问题的链接: