Элегантный способ получить несколько бизнес-объектов в БД (за один раз) без RBAR в .Net? - PullRequest
0 голосов
/ 13 мая 2011

В моем приложении есть коллекция заполненных пользовательских бизнес-объектов, которые я собираюсь вставить в БД SQL 2005 с помощью хранимой процедуры. Размер коллекции не массивный, может быть, 20-30 предметов.

Есть ли элегантный способ вставить все эти объекты в БД за один раз, не делая что-то вроде следующего?:

  • Open DB conn
  • За каждый предмет в коллекции ...
  • Установить значения параметров SP из item.properties для SQLCmd
  • SQLCmd.ExecuteNonQuery
  • Сброс параметров
  • Далее
  • Закрыть DB conn

Ответы [ 4 ]

3 голосов
/ 13 мая 2011

Табличные значения параметров, если вы используете Sql 2008.

http://www.sommarskog.se/arrays-in-sql-2008.html

1 голос
/ 13 мая 2011

Использовать сохраненный процесс для получения всех наборов результатов за один раз?

1 голос
/ 13 мая 2011

Вы можете сериализовать все ваши объекты в текстовый формат JSON или любой другой, передать строку в SPROC с одним входным параметром, затем десериализовать объекты и выполнить итерации в SPROC.

Вы будетевсе равно придется делать отдельные вставки, но это одна операция из вашего приложения.

0 голосов
/ 13 мая 2011

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

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