Наиболее эффективный способ сделать это - использовать Табличные параметры (TVP) , поддерживаемые SQL Server 2008.
Легко реализовать оба на Сторона SQL Server , а также сторона клиента C # (параметр будет иметь значение SqlDbType.Structured ).По существу, следующие шаги:
- Определить новый «тип таблицы» в вашей базе данных
- Добавить параметр в вашу хранимую процедуру, имеющий тип, который вы только что определили
- Добавьте соответствующий параметр в ваш клиентский код C #
Вот выдержка из соответствующей статьи MSDN:
"Табличные параметры обеспечивают простой способ маршалинга нескольких строк данныхиз клиентского приложения в SQL Server, не требуя многократных циклов или специальной серверной логики для обработки данных. Табличные значения параметров можно использовать для инкапсуляции строк данных в клиентском приложении и отправки данных на сервер в виде одного параметризованногоКоманда. Входящие строки данных хранятся в табличной переменной, с которой затем можно работать, используя Transact-SQL.
"Доступ к значениям столбцов в табличных параметрах можно получить с помощью стандартных операторов SELECT Transact-SQL.Табличные значения строго типизированы, а их структура автоматически проверяется.Размер табличных параметров ограничен только памятью сервера. "