Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

Max951

 
Название:

Identity Map - Контроль загруженных объектов из базы.

Дата: 31 January 2006
Описание: При сложной структуре бизнес-логики, не всегда может быть полная уверенность, что объект, который вы собираетесь поднять из базы, ранее не был вами уже поднят впроцессе текущего риквеста :). Что ж напишем простейший код, который перед загрузкой будет проверять, не грузили мы его ранее. В моей структуре бизнес-логики, загрузка любого бизнес - объекта проходит через этот метод, поэтому, проблема была решена очень быстро :) Стоить ещё заметить, что здесь используется класс CallContext, соответсвенно код будет работать как для Web, так и для Win приложений и гарантированно будет жить только в течении одного потока (в web - это аналог Context.Items - который внутри себя использует этот же класс) 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=181]Identity Map - Контроль загруженных объектов из базы.[/CODEPOST]
Оценка: Проголосовало 7 посетителей, средняя оценка 4.29
Оценить:
  1 using System.Runtime.Remoting.Messaging;
  2 
  3 public const string ObjectsTable = "LoadedObjects";
  4 
  5 private HybridDictionary m_cashedTable;
  6 /// <summary>
  7 /// Коллекция загруженных обьектов
  8 /// </summary>
  9 private HybridDictionary CashedTable
 10 {
 11   get
 12   {
 13    m_cashedTable = (HybridDictionary)CallContext.GetData(AObjectMapper.ObjectsTable);
 14     if (m_cashedTable == null)
 15     {
 16 	m_cashedTable = new HybridDictionary();
 17 	CallContext.SetData(AObjectMapper.ObjectsTable, m_cashedTable);
 18     }
 19     return m_cashedTable;
 20     }			
 21 }
 22 
 23 public virtual IPersistent SelectByID(int id) 
 24 {
 25   IPersistent searchObject = (IPersistent)CashedTable [BusinessObjectType.ToString()	+ "_" + id.ToString()];
 26   if (searchObject == null)
 27   {
 28      // грузим объект и добавляем в коллекцию.
 29   }
 30   return searchObject; 
 31 }
 32 
Вернуться к списку исходников в категории Общие вопросы программирования на ASP.NET
 
Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта