Передача коллекции объектов в качестве параметра в хранимую процедуру SQL Server

У меня общий вопрос о том, можно ли что-то сделать - и будет ли это наиболее эффективным способом сделать это!

Подводя итог: могу ли я передать коллекцию объектов в качестве параметра хранимой процедуре?

Допустим, у меня есть таблица SQL Server с именемUsers [UserID, Forename, Surname] и еще один стол называетсяHobbies [HobbyID, UserID, HobbyName, HobbyTypeID]

Эта настройка предназначена для записи нескольких хобби с пользователем.

В моем приложении я хочу обновить запись пользователя.

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

Если я обновляю имя пользователя и 2 его хобби, для этого потребуется 3 обращения к базе данных.

(1 вызов хранимой процедуры для обновления имени и фамилии и 2 вызова хранимой процедуры для обновления 2 записей хобби)

Мой вопрос:
Могу ли я сделать всего один вызов в базу данных, передав все параметры только одной хранимой процедуре.

например.

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) 
    }

Я могу это сделать ? (а какой путь будет более эффективным?) Как будет выглядеть хранимая процедура?

ALTER PROCEDURE [dbo].[User_Update]

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

Ответы на вопрос(1)

Ваш ответ на вопрос