Шаблон репозитория должен использоваться для представления хранилища в памяти для ваших доменных объектов.Поскольку вы хотите, чтобы ваша доменная модель не учитывала внутренние компоненты персистентности, а также имела все, спроектированное вокруг агрегированных корней, то нет смысла иметь сущность ImagesForProducts и, следовательно, не имеет смысла иметь отдельный репозиторий для сущностей ImagesForProducts.
Прежде всего, я бы порекомендовал построить модель вашего домена с использованием объектов POCO, которые можно использовать в любом постоянном сценарии (LINQ to SQL, EF, хранимые процедуры ...).Вы должны иметь только два репозитория (ProductRepository и ImageRepository) и разрешить отношение «многие ко многим» как «реляционные» свойства в обоих объектах домена.Например, вы можете добавить коллекцию Image в объект домена Product и коллекцию Product в объект домена Image.Как только вы создадите свои объекты POCO, вы сможете обрабатывать сопоставления с определенным хранилищем сохраняемости в своих хранилищах (предпочтительно в конструкторе).
Как только вы реализуете plubming, вы можете добавить изображение к продукту:
product.Images.Add(image);
Затем вы можете назвать свой репозиторий следующим образом:
productRepository.Add(product);