Как преобразовать дерево выражений в частичный запрос SQL?C#

Место общения программистов C#
Ответить
Anonymous
 Как преобразовать дерево выражений в частичный запрос SQL?

Сообщение Anonymous »

Когда EF или LINQ to SQL выполняет запрос, он:
  • строит дерево выражений из кода;
  • преобразует дерево выражений в запрос SQL;
  • выполняет запрос, получает необработанные результаты из базы данных и преобразует их в результат, который будет использоваться приложением.
Глядя на трассировку стека, я не могу понять, где происходит вторая часть.

В целом, можно ли использовать существующую часть EF или (предпочтительно) LINQ to SQL для преобразования объекта Expression в частичный SQL-запрос (с использованием синтаксиса Transact-SQL), или мне придется изобретать велосипед?



Обновление: комментарий просит привести пример того, что я пытаюсь сделать.

На самом деле ответ Райана Райта ниже прекрасно иллюстрирует то, чего я хочу достичь в результате, за исключением того факта, что мой вопрос конкретно о том, как я могу это сделать, используя существующие механизмы .NET Framework, фактически используемые EF и LINQ to SQL, вместо того, чтобы изобретать велосипед и писать тысячи строк непроверенного кода, чтобы сделать то же самое.

Вот также пример. Еще раз обратите внимание, что здесь нет кода, сгенерированного ORM.

Код: Выделить всё

private class Product
{
[DatabaseMapping("ProductId")]
public int Id { get; set; }

[DatabaseMapping("Price")]
public int PriceInCents { get; set; }
}

private string Convert(Expression expression)
{
// Some magic calls to .NET Framework code happen here.
// [...]
}

private void TestConvert()
{
Expression inPriceRange =
(Product product, int from, int to) =>
product.PriceInCents >= from && product.PriceInCents = @from и [Price] 

Подробнее здесь: [url]https://stackoverflow.com/questions/7731905/how-to-convert-an-expression-tree-to-a-partial-sql-query[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»