Здравствуйте, Aikin, Вы писали:
A>1) Пользователь получил этот набор в одной бизнес транзакции? Тогда ничего не стоит (и это будет много проще чем кэш живущий все время приложения) сделать чтобы одинаковые сущности представлялись одинаковыми классами.
A>Тем более Идентити Мап гарантирует уникальность только в пределах одной бизнес транзакции: "An Identity Map keeps a record of all objects that have been read from the database in a single business transaction." (статья выше).
A>Этот паттерн дается за фри при использовании nHibernate
A>2) В разных?
A>Тогда в любом случае стоит перегрузить эти данные, так как их может изменить кто-то другой.
это вообще говоря смотря что называть бизнес-транзакцией

В любом случае, для ситуаций типа "загруженные данные может изменить кто-то другой" имеется оптимистическая блокировка и кнопка "Обновить данные" на экране. А иначе просто потеряется весь смысл кэширования, если ты будешь перечитывать все данные для каждой так называемой "бизнес-транзакции".
A>То же самое про SomeObjectInfo. Причем тут даже не на каждый результат поиска, а на каждый резултат, что мы будем показывать пользователю.
(+ реализация сортировки/фильтрации)Что-то мне не кажется, что это сильно одинаковые по затратам веши

тем более, если уж пошла такая пьянка, чем принципиально твой SomeObjectInfo лучше DataRow ? Он ведь тоже к доменной модели особого отношения иметь не будет
A>Ну как же: "если мы просто показываем данные как результат запроса, то используем DataRow, а если манипулируем ими, то Client".
не, там у тебя было что-то про дублирование изменений в обоих классах и прочее

В датароу я ведь ничего дублировать не буду, просто заберу выбранный ID'шник и пойду с ним в БД
A>>>В моем понятии кэш это когда мы что-то храним чтобы не обращаться лишний раз к БД (например). А то про что ты говоришь это Identity Map.
A>>>См выше. про Equals()
раз уж ты так любишь точные названия паттернов, то как называется паттерн, который просто занимается кэшированием ? Что-то я такого у Фаулера не нашел. Да и вообще странный какой-то кэш получается, не гарантирует мне возвращение одного и того-же объекта
A>Ниразуниправда
A>В документации: 13.2.2. Using stored procedures for querying
действительно, не знал, а когда это там появилось ? А ленивая загрузка (на ХП) и оптимистическое блокирование тоже в нем есть ?