Как использовать LINQ to SQL с хранимыми процедурами, возвращающими несколько наборов результатов без ORM? - PullRequest
5 голосов
/ 24 мая 2011

http://blogs.msdn.com/b/dditweb/archive/2008/05/06/linq-to-sql-and-multiple-result-sets-in-stored-procedures.aspx

Аналогично этой ссылке, однако проект, над которым я работаю , не использует компонент ORM LINQ to SQL (мы используем его больше для быстрой генерацииИнтерфейс ADO.Net для БД).

В настоящее время используется следующий шаблон:

var result = myDataContext.GetAllCustomersAndOrders();

И хранимая процедура выглядит следующим образом:

enter image description here

Какие дополнительные шаги мне нужно предпринять?Нужно ли расширять сгенерированный dbml или файл частичного класса контекста данных?

Надеюсь, это имеет смысл ... Это немного сложно объяснить, и все примеры, которые я нашел, используют часть ORM dbml.(перетаскивание таблиц на поверхность конструктора dbml).

1 Ответ

6 голосов
/ 08 июля 2012

Да, вы можете сделать это, но мне потребуется создать частичный класс для вашего dbml.

Итак, если ваш dbml-файл - MyLinqToSQL.dbml

  • открыть конструктор dbml
  • перетащите SP на поверхность дизайна
  • 1010 * сохранить *
  • и затем нажмите F7.

Это создаст частичный класс MyLinqToSQL.cs.

Сейчас ...

  • открыть автоматически сгенерированный MyLinqToSQL.designer.cs
  • скопировать метод доступа с тем же именем, что и SP (тот, из которого вы хотите вернуть несколько наборов.)
  • Вставьте это в тело частичного класса в MyLinqToSQL.cs, который вы только что создали.
  • изменить имя метода на что-то, по крайней мере, немного другое
  • изменить тип возвращаемого значения с ISingleResult на IMultipleResult.
  • украсьте ваш новый класс атрибутами System.Data.Linq.Mapping.ResultType, чтобы определить типы возвращаемого набора.

Все наборы результатов будут возвращены в одной коллекции IQueryable.

Затем можно использовать отражение, чтобы определить тип каждого элемента коллекции, а затем использовать их для использования.

См. http://kishor -naik-dotnet.blogspot.com / 2011/12 / linq-множественный результат-набор-процедуры.html

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