![]() |
#1 |
Участник
|
axforum blogs: Агрегированные Fetch запросы могут не вернуть данных
Источник: http://axforum.info/forums/blog.php?b=417
============== Недавно я посмотрел статистику выполнения по своим плагинам и обнаружил что один из них иногда валится с ошибкой: X++: SELECT [plugintypeidname], [averageexecutetimeinmilliseconds], [executecount], [failurecount], [failurepercent]FROM FilteredPluginTypeStatistic Порыскав в логах системных заданий я выяснил что в некоторых случаях плагин валится с ошибкой "given key was not present in the dictionary", что казалось странным, так как казалось что все необходимые проверки я выполнил. Беда крылась в получении значения агрегата в Fetch запросе. Рассмотрим пример из SDK: X++: string estimatedvalue_avg = @" "; EntityCollection estimatedvalue_avg_result = _serviceProxy.RetrieveMultiple(new FetchExpression(estimatedvalue_avg)); foreach (var c in estimatedvalue_avg_result.Entities) { decimal aggregate1 = ((Money)((AliasedValue)c["estimatedvalue_avg"]).Value).Value; System.Console.WriteLine("Average estimated value: " + aggregate1); } В данном случае не принципиально для чего к коде цикл - запрос все равно вернет только 1 запись Entity. У возвращенного объекта будет единственный атрибут estimatedvalue_avg, который за каким-то хреном завернут в объект AliasedValue. Так вот момент заключается в том, что атрибуты-агригаты, равно как и все прочие столбцы возвращаются системой только в том случае, если они содержат данные! В противном случае, такого столбца в возвращенном объекте не будет. Если запустить этот пример на пустой базе, вы получите ошибку. Источник: http://axforum.info/forums/blog.php?b=417
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|