ASP.NET - Как сохранить коллекцию списков в БД с помощью хранимой процедуры? - PullRequest
0 голосов
/ 31 августа 2011

У меня есть коллекция списков:

 List<Person> people = new List<Person>();

    Person p1 = new Person();

    p1.FirstName = "Nikos";
    p1.LastName = "Kantzelis";
    p1.Email = "nikolaosk@hotmail.com";
    p1.Height = 1.78m;
    p1.Weight = 88.5m;


    Person p2 = new Person();

    p2.FirstName = "James";
    p2.LastName = "Rowling";
    p2.Email = "jamesr@hotmail.com";
    p2.Height = 1.98m;
    p2.Weight = 98.25m;

    Person p3 = new Person();

    p3.FirstName = "George";
    p3.LastName = "Graham";
    p3.Email = "graham@yahoo.co.uk";
    p3.Height = 1.88m;
    p3.Weight = 81.5m;

    people.Add(p1);
    people.Add(p2);
    people.Add(p3);

Теперь я хочу сохранить значения в этой коллекции списков в некоторых моих таблицах в БД с помощью хранимой процедуры.

Пожалуйста, сообщите.

С уважением, Паван

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Я не уверен, что вы ищете что-то более необычное, но вы можете сделать что-то вроде этого:

foreach (Person person in people)
{
    //example code
    //save each person in the list to the database
    SavePerson(person.Name, person.Age, ...); 
}

Если хотите, вы также можете сделать это с помощью LINQ следующим образом:

//example code
//save each person in the list to the database
people.ForEach(person => SavePerson(person.Name, person.Age, ...));
0 голосов
/ 01 сентября 2011

Если вашей БД является SQL 2005 (или 2008) и выше, вы можете сериализовать список объектов в XML, затем передать весь блоб XML в SP в параметре, а затем использовать возможности XML-запросов MSSQL для анализа XML и вставьте данные в таблицу.

Сортировка INSERT INTO Person SELECT * FROM XML

Это позволило бы один вызов SP, и он мог бы быть включен в транзакцию внутри SP (вместо пересечения границ процесса).

...