|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
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 |
|
|
 |
 |
 |
 |
|
|