Плагин Dynamics CRM 365 применить QueryExpression к пользовательскому списку объектов
В моем плагине у меня есть список сущностей. Я хотел бы применить выражение запроса, которое передается во входных параметрах
QueryExpression query = PluginExecutionContext.InputParameters["Query"];
в пользовательский список типа объекта.
List<Entity> myList;
Объекты в списке соответствуют тем же атрибутам, что и объекты, используемые в контексте плагина. Есть ли способ применить выражение QueryExpression к списку объектов или преобразовать выражение QueryExpression в linq?
3 ответа
QueryExpression на самом деле является просто оболочкой для FetchXML, которая является просто схемой XML для запросов в Dynamics CRM. Если вы хотите передать запрос в качестве параметра плагину, вы можете настроить пользовательский вызов объекта "query" или что-то в этом роде и добавить поле типа textarea в этот пользовательский объект с именем "fetchxml". Затем настройте входной параметр вашего плагина так, чтобы он принимал запись этого пользовательского объекта вместо текстового параметра. это дает дополнительное преимущество, позволяя вам легче редактировать входные параметры плагина.
Конечно, вы всегда можете просто поместить raw fetchXML в параметр в виде текста, но я могу сказать вам по опыту, что это вернется к вам, потому что это крайне сложно поддерживать, потому что любые изменения в другом месте системы могут полностью разрушить ваш плагин.
Если вы хотите узнать больше о том, как получить fetchXML для определенного запроса или у вас есть другие вопросы, просто напишите мне комментарий.
Есть ли способ применить выражение QueryExpression к списку объектов
Ответ №
QueryExpression & FetchXML является родным для Dynamics CRM, его можно использовать только для службы CRM (база данных). Я предполагаю, что этот плагин находится в сообщении "Извлечь", и вы пытаетесь использовать системное выражение запроса из этого вызова службы "Извлечь" для своего собственного набора данных сущности (List<Entity>
). Но почему?
или преобразовать QueryExpression в linq?
Я знаю, что возможно обратное.
Попробуйте Fake-XRM-Easy - это инструмент для CRM с открытым исходным кодом. В этом есть процедура TranslateQueryExpressionToLinq().