Re[10]: Domain Model, мапперы и отчеты
От: Stalker. Австралия  
Дата: 21.04.08 18:32
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Да брось ты с этим кэшированием. Зачем? Ну и что что у нас будет два разных объекта представляющие одного клиента, кто тебе сказал, что это конец света?

A>Что мешает переорпеделить Equals() чтобы при сравнении программа знала что это один и тот же объект?

Зачем ? Хм, могу предложить ситуацию из моего реального проекта. Система по учету производства деталей. Имеется набор деталей, каждая из них имеет технологию производства, причем одна и та-же технология может быть задействована в нескольких деталях. Пользователь загружает набор деталей для просмотра. Разумеется, время от времени в одном наборе деталей оказываются детали с одинаковой технологией.
А теперь смотри — пользователь отредактировал технологию детали А. Потом переключился на деталь Б, имеющую эту-же технологию. Но из-за того, что деталь Б имеет другой объект Технология (хоть и с одним ID), он увидит старую неотредактированную технологию.
Может это и не конец света, но очевидно баг программы. И никакие Equals() здесь не помогут

A>А удобно на каждый чих создавать свой собственный типизированный DataTable?

ну не на каждый чих, а на каждую таблицу с результатами поиска

A>Один класс DataRow, второй -- Client.

а причем здесь тогда размазывание сущности по двум классам и интерфейсам

A>В моем понятии кэш это когда мы что-то храним чтобы не обращаться лишний раз к БД (например). А то про что ты говоришь это Identity Map.

A>См выше. про Equals()
в моем понятии кэш сочетает в себе все эти достоинства.

A>В общем советую просмотреть код проекта сделанного на NHibernate (советую тут (Enterprise NHibernate Sample) просмотри DAO и Domain все остальное это ASP .net на MVP), ИМХО, просто, понятно и действительно меньше лишних телодвижений.

к сожалению хибернейт не умеет маппить объекты на хранимые процедуры, в результате чего мы его не применяем. Вот Microsoft обещают сделать маппинг на ХП
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.