Запрос LinQ to SQL, созданный во время выполнения - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть XML-файл, который содержит детали запроса, такие как

<queries>
  <query>
    <name>GetStudentById</name>
    <statement>select student_name from student where student_id=@id</statement>
   </query>
 </queries>

В коде C # пользователь будет вызывать метод ExecuteQuery (имя строки, параметры хеш-таблицы) Я извлеку оператор запроса из XML-файла, используя имя запроса.

Хэш-таблица параметров будет содержать такие значения, как Титулы [ '@ идентификатор'] = 5

Затем я буду использовать ADO .NET для построения запроса и выполнения его во время выполнения с использованием ExecuteReader после создания оператора запроса и передачи ему списка параметров.

Я хочу знать, возможно ли это сделать с помощью LinQ. Может кто-нибудь показать мне, как выполнить оператор в виде запроса LinQ?

Спасибо

David

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

Посмотрите на этот SO пост.Посмотрите на ответ Джона Скита, где он объясняет, как использовать CSharpCodeProvider для выполнения оператора во время выполнения.

Однако вам придется преобразовать ваш оператор из sql в linq самостоятельно.Если нет особой причины для того, чтобы он был linq, я бы посоветовал сохранить его в sql, потому что в конце дня вы собираетесь анализировать sql в linq, а затем обратно в sql.

Даже с dynamic linq у вас возникнет проблема, потому что вам всегда нужно будет указывать класс from в своем запросе.

Другой вариант заключается в том, что если вы захотите использовать это с вашей структурой модели сущностей, это будетбыло бы проще использовать сущность sql , посмотрите здесь и здесь для получения дополнительной информации.

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

Нашел что-то под названием LinqTextQueryBuilder в codeplex и другой библиотеке MS. Ссылки ниже

LinqTextQueryBuilder

http://msdn.microsoft.com/en-us/vstudio/bb894665.aspx

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

Это значительный шаг вперед от использования строковых операторов запросов через ADO.NET к Linq to SQL.В первом случае вам нужно создать модель сущности Linq to SQL / DataContext.Как вы анализируете SQL-оператор из текста в Linq, я не совсем уверен, но если бы я хотел узнать, как этого добиться, я бы прочитал о деревьях выражений с целью создания синтаксического анализатора, который принимает ваш строковый запрос.и ссылки на вашу модель сущности для создания запроса linq.

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