- строит дерево выражений из кода;
- преобразует дерево выражений в запрос 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]
Мобильная версия