Как преобразовать общий запрос ADO.net в Entity Framework или Linq - PullRequest
3 голосов
/ 09 декабря 2011

Каков наилучший шаблон для использования более новых EF / Linq для генерации динамических запросов и возврата общего набора данных?

Моя существующая среда в значительной степени опирается на более старые динамически созданные SQL-запросы ADO.net, возвращаемые как наборы данных. Используя шаблон: - sql и детали параметров пропущены специально -

SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

Это позволяет нам возвращать пользовательские запросы и возвращать их пользователю в виде таблицы данных. Мы можем выполнить любой динамически созданный SQL и вернуть разные наборы данных с разными столбцами, типами данных и т. Д.

Мы НЕ используем это для отображения O / R, но для запросов только для чтения.

Будет ли уместным для этого перейти на EF / Linq или лучше будет продолжать использовать ADO.net, даже если это похоже на старую технологию?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Имеет ли значение , чтобы быть EF / LINQ?

Как насчет использования чего-то вроде Массив Роба Конери для запросов только для чтения?
Что этов двух словах: выполняет запросы SQL и возвращает списки динамических объектов.

Цитата по ссылке:

var result = tbl.Query("SELECT * FROM Categories");

[...]

То, что вы получите, - это IEnumerable - это означает, что он податлив и захватывающий.Он примет форму того, что вы возвращаете в своем запросе, и у него будут свойства и так далее.

0 голосов
/ 09 декабря 2011

Хотя EntityFramework имеет метод CreateSourceQuery<T>, который принимает произвольный sql, его результаты должны быть известны во время компиляции и указываться с помощью универсального параметра. В результате такой подход, скорее всего, не сработает для вас.

Существует библиотека динамического расширения, которая позволяет вам указать произвольный sql для контекста linq-to-sql или среды объекта, но если вы собираетесь переключиться на linq, просто чтобы передать его динамическому sql, я бы сказал, что это не так стоило того.

Придерживайтесь простых наборов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...