Это дизайнерское решение, поэтому разные люди будут иметь разные идеи, но это мое:
Я бы создал хранимую процедуру для вставки одного тега за раз. Не используйте SQL Server для работы с циклами for-each - это не то, для чего он создан.
Итак, в слое, который выполняет вызов базы данных (это может быть ваше приложение, или промежуточный уровень, такой как веб-сервис), есть метод, который принимает List(Of RecipeTag)
, создает соединение и затем циклически перебирает каждый RecipeTag
вызов хранимой процедуры. (вы можете использовать for-each с Lists
, так как они перечислимы). Если вы сделаете это, то не будете открывать и закрывать соединение с базой данных каждый раз, просто в начале и в конце, так что это будет быстро.
RecipeTag
(в моем примере) - это какой-то объект, который вы создали, который ваш интерфейс может использовать для отслеживания любой другой информации (например, кто ее добавил, для чего она предназначена и т. Д.) В хорошем дискретном виде контейнер, не беспокоясь о том, как это будет происходить. Вы можете добавить дополнительные методы в этот объект для проверки и т. Д., Если хотите.
С вышеупомянутым дизайном у вас есть: уровень базы данных, который не знает или не заботится о нескольких объектах, он просто имеет хранимую процедуру для вставки набора значений и интерфейс, который может иметь дело с коллекцией сильно объекты и промежуточный слой (или, возможно, класс в вашем внешнем приложении), который выполняет этот перевод между ними.