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();
        }

你知道为什么会这样吗?

MS CRM 2011有效间隔在DB中不正确

Dynamics CRM数据库中的日期以UTC格式存储,CRM UI自动将其转换为本地时间,以便用户看到正确的时间。

当您使用SDK检索datetime字段时,值不会自动转换,因此您需要使用ToLocalTime()来获取值,这取决于用户进行SDK调用的时区。