Для фона у меня есть слой данных и слой обслуживания на основе модели Rob Conery's Storefront и как у Роба, многие из моих объектов домена и связаны с LazyList<>
и LazyItem<>
, чтобы использовать отложенное выполнение Linq2Sql, учитывая, что мой Lazy*
используются IQueryable<T>
, а не this awesome delegate approach.Как я должен генерировать миниатюру?
Так я есть граф объекта, как это (в основном, каждая активность должна иметь галерею фотографий многих images- миниатюр и фотографии в натуральную величину):
latest3Activities[0].Gallery.Images.Inner[1].FullImage
Тип Gallery
имеет изображения свойство LazyList<PhotoGalleryImage>
и поэтому IList<PhotoGalleryImage>
из этого LazyList - это Inner
, который вы видите. Каждый PhotoGalleryImage
объект имеет FullImage
и Thumbnail
Недвижимость, оба типа Image
.
Идея состоит в том, что полная загруженная фотография сохраняется в собственности PhotoGalleryImage.FullImage
и изначально Thumbnail
- Null
. То, что я за этим: когда свойство Thumbnail
доступно для доступа в первый раз, если это Null
, я хочу, чтобы мой сервисный слой создавал Thumb, сохраняйте его в БД, затем возвращайте экземпляр Image
, который является меньшим фото , У меня есть весь код для создания миниатюры из полноразмерного изображения, так что здесь не вопрос.
Что я не могу понять, как поймать первый доступ к свойству Thumbnail
(в моем контексте архитектуры IQueryable<>
), а затем на уровне обслуживания изменить размер, а не в репозитории (DAL). Я сильно чувствую, что уровень сервиса (бизнес) должен отвечать за это функциональное решение, но я не вижу, как заставить его работать.
В настоящее время я думаю, что сопоставление от моих классов домена в хранилищах к классам Linq2Sql было бы хорошим местом для идентификации этого «первого доступа», к которому я обращаюсь, но я не вижу тогда, как может быть вызван более низкий уровень до уровня обслуживания и выполнить сжатие (или даже если оно может, то оно должно).
Возможно, мой проект ограничивает меня тем, что Repos делает преобразование. Может быть, я не хочу, чтобы сервисный уровень вообще выполнял эту логику. Возможно, мой дизайн настолько ужасен, что я действительно не должен сталкиваться с этим беспорядком.
Помощь Pls. Все отзывы приветствуются.
Просьба уточнить, как вы собираетесь использовать уменьшенный экземпляр изображения. –
ok- в подробном представлении для Activity, я загружу в превью для связанной галереи фотографий через ajax (вроде того, как это делает Facebook). каждый элемент изображения галереи предоставляет мне доступ как к миниатюре (для таблицы изображений), так и к полноразмерному (когда пользователь нажимает на большой палец). –