Есть ли способ преобразовать QueryExpression в оператор SQL? например, это:
QueryExpression query = new QueryExpression("entity");
query.ColumnSet = new ColumnSet("col1");
query.Criteria.AddCondition("col2", ConditionOperator.Equal, 1);
к
SELECT col1 FROM entity WHERE col2 = 1
Было бы полезно упомянуть, какую технологию вы используете. Похоже, вы говорите о QueryExpression, который находится в Microsoft.Xrm.Sdk.Query (то есть Microsoft Dynamics), но есть много поставщиков, которые используют такой подход к запросам.
Я предлагаю вам рассмотреть возможность преобразования в FetchXML (встроенное преобразование в XRM) и написать преобразователь из FetchXML в SQL.
@ haag1 для тестирования и отладки
@NetMage Спасибо, помогло.
@BananaCake, конечно .. да, мои извинения, лол





Я предполагаю, что вы спрашиваете, есть ли автоматический способ сделать это, и краткий ответ - Нет. Если нет кого-то, кто взял на себя задачу написать библиотеку для этого (чего я не видел), это не что-то, что поддерживается в .NET из коробки.
Для этого есть несколько причин, но наиболее очевидная из них заключается в том, что QueryExpression реализует функции, которые изначально не поддерживаются в SQL. Это операции, которые может выполнять Entity Framework, потому что он может просто читать все объекты в память и после этого делать все, что захочет. Используя SQL, вы должны отправить эти инструкции на сервер базы данных, и он должен понимать, что вы ему говорите.
Опять же, я не говорю, что это невозможно. Если бы вы действительно хотели этого, вы, вероятно, могли бы придумать несколько очень креативных способов имитации того, что делает Entity Framework, но это будет тяжелая битва.
Да, я пытался написать что-то быстро, но потом нашел именно то, что вы пишете. Для этого можно написать какую-нибудь библиотеку, но это будет очень утомительно и долго.
Решение состоит в том, чтобы преобразовать запрос в FetchXML (https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/org-service/sample-convert-queries-fetch-queryexpression), а затем найти некоторые инструменты или библиотеки для преобразования FetchXML в SQL.
Какая-то конкретная причина, по которой вы все равно хотите это сделать? Не очень практично.