Przekazywanie kolekcji obiektów jako parametru do procedury przechowywanej SQL Server

Mam ogólne pytanie, czy można coś zrobić - i czy będzie to najbardziej skuteczny sposób!

Podsumowując: czy mogę przekazać kolekcję obiektów jako parametr do procedury składowanej?

Powiedzmy, że mam tabelę SQL Server o nazwieUsers [UserID, Forename, Surname] i inny stół o nazwieHobbies [HobbyID, UserID, HobbyName, HobbyTypeID]

Ta konfiguracja służy do rejestrowania wielu hobby przeciwko użytkownikowi.

W mojej aplikacji chcę zaktualizować rekord użytkownika.

Normalnie - aktualizowałbym tabelę użytkownika, a następnie kodował, przechodził przez każde hobby i aktualizował rekord tabeli hobby o rekord.

Jeśli aktualizuję nazwę użytkownika i 2 ich hobby, wymagałoby to 3 połączeń do bazy danych.

(1 wywołanie procedury składowanej, aby zaktualizować imię / nazwisko i 2 wywołania procedury składowanej, aby zaktualizować 2 rekordy hobby)

Moje pytanie brzmi:
Czy mogę wykonać tylko 1 wywołanie do bazy danych, przekazując wszystkie parametry tylko do jednej procedury składowanej.

na przykład.

intUserID = 1
strForename = "Edward"
strSurname = "ScissorHands"

dim objHobbyCollection as New List(Of Hobby)
'Assume that I have 2 hobby objects, each with their hobbyID, UserID, HobbyName & HobbyTypeID

Dim params As SqlParameter()
params = New SqlParameter() {
    New SqlParameter("@UserID", intUserID),
    New SqlParameter("@Forename", strForename),
    New SqlParameter("@Surname", strSurname),
    New SqlParameter("@Hobbies", objHobbyCollection) 
    }

Mogę to zrobić ? (i jaki byłby bardziej wydajny?) Jak wyglądałaby procedura składowana?

ALTER PROCEDURE [dbo].[User_Update]

 @UserID    INT
,@Forename      NVARCHAR(50) = NULL
,@Surname   NVARCHAR(50) = NULL
,@Hobbies   ??????????????

questionAnswers(1)

yourAnswerToTheQuestion