Зависит от опыта, который вы ищете для пользователя. Я реализовал нечто подобное для пометки контента. В модели теги представлены как IList, но пользовательский интерфейс отображает список с разделителями-запятыми в одном текстовом поле. Затем я выполняю объединение элементов в списке в строку, чтобы заполнить текстовое поле, и делю ввод, чтобы поместить элементы обратно в IList в модели.
В моем DAL я имею дело с преобразованием Списка в сущности LINQ, обработкой вставок и удалений и т. Д.
Это не самый простой код, но им не сложно управлять, и он дает пользователю ожидаемый интерфейс.
Я уверен, что есть и другие способы справиться с этим, но я бы сосредоточился на том, что лучше всего подойдет для пользователя, а затем разработал детали сопоставления на основе этого.