I believe in SQLServer 2008, and later you can add a strongly typed DataTable parameter to your stored procedure that you can pass .Net DataTable to.
BULK INSERT is a good suggestion to just insert a large number of rows, and it is much faster than individual inserts.
To insert hierarchical object data, for example, parent 1 has 2 child records, parent 2 has 3 child records, parent 3 has 1 child record ... I used XML in the past to serialize the structure of the object in .Net before Go to SQLServer and shred it into tables. Of course, if you do so much, you will probably be better off using Entity Framework or NHibernate, etc.
source share