2016-01-18 2 views
3

Как сохранить список в базе данных сразу без итерации по всему списку и сохранения каждого объекта отдельно в базе данных.Как вставить Список <T> в базу данных

//So not like this solution 
foreach(T t in data){ 
    //Call function to save with stored procedure 
    Database.Save(t); 
} 

(также без использования рамки сущности) (я, кажется, только чтобы получить решения, основанные на структуре объекта или Dapper.Net на StackOverflow.)

Это возможно даже, посылая перечислить каким-либо образом в базу данных и использовать хранимую процедуру?


@Edit Дополнительную информацию

Я в настоящее время работаю на SQL 2012 и хочу, чтобы быть в состоянии перебросить все, если что-то не работает!

+0

Является ли t сопоставлением с сущностью в базе данных? Поскольку вы можете использовать datatables –

+2

В самом простом случае вы можете вручную создать группу операторов INSERT и выполнить их как одну партию против базы данных - существует миллион способов скинуть этот кот! –

ответ

6

Если вы используете хотя бы SQL Server 2008, для этого вы можете использовать Table Valued parameter. Это question and answers охватывает тему.

По существу вы создаете тип в SQL, а затем что-то в C#, чтобы преобразовать данные в IEnumerable<SqlDataRecord>, который соответствует типу, указанному.

+0

OP должен упомянуть версию SQL Server, потому что это невозможно до 2008 года. – niksofteng

+0

@nikhilvartak это правда. Я добавлю эту информацию. – NikolaiDante

2

Вы можете использовать Table Valued Parameter для передачи коллекции в хранимую процедуру. MSDN

Смежные вопросы