MS CRM 2011有效间隔在DB中不正确
本文关键字:DB 不正确 CRM 2011 有效 MS | 更新日期: 2023-09-27 18:11:31
我不知道为什么,但是日历规则,其中存储业务闭包在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.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();
}
你知道为什么会这样吗?
Dynamics CRM数据库中的日期以UTC格式存储,CRM UI自动将其转换为本地时间,以便用户看到正确的时间。
当您使用SDK检索datetime字段时,值不会自动转换,因此您需要使用ToLocalTime()
来获取值,这取决于用户进行SDK调用的时区。