Connecting Tech Pros Worldwide Help | Site Map

Caching business objects?

 
LinkBack Thread Tools Search this Thread
  #1  
Old August 22nd, 2007, 01:15 PM
Showjumper
Guest
 
Posts: n/a
Default Caching business objects?

Hi
I have custom bustom objects whose properties i populate using a datareader.
Is it possible to cache the business object afteri have populated it? If so,
how? Everything i have tried does not work.

Ashok




  #2  
Old August 22nd, 2007, 01:45 PM
Eliyahu Goldin
Guest
 
Posts: n/a
Default Re: Caching business objects?

Did you try putting it into a session variable?

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


"Showjumper" <nlsdkfjawrote in message
news:etdFy2L5HHA.4712@TK2MSFTNGP04.phx.gbl...
Quote:
Hi
I have custom bustom objects whose properties i populate using a
datareader. Is it possible to cache the business object afteri have
populated it? If so, how? Everything i have tried does not work.
>
Ashok
>
>

  #3  
Old August 22nd, 2007, 02:15 PM
sloan
Guest
 
Posts: n/a
Default Re: Caching business objects?


When I know I need to cache these objects, I usually go ahead an put on the
[Serializable]
attribute.

This would affect you if you ever went to Session storing like sql server
session state.


You can also look at this fancy object I wrote, for a "strong typed" version
of storing items in Session.

http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!151.entry


If you're on 1.1, go back to the main blog page, there is a 1.1 version of
it as well.





"Showjumper" <nlsdkfjawrote in message
news:etdFy2L5HHA.4712@TK2MSFTNGP04.phx.gbl...
Quote:
Hi
I have custom bustom objects whose properties i populate using a
datareader. Is it possible to cache the business object afteri have
populated it? If so, how? Everything i have tried does not work.
>
Ashok
>
>

  #4  
Old August 23rd, 2007, 12:25 AM
Showjumper
Guest
 
Posts: n/a
Default Re: Caching business objects?

No i did not try session variables. I was attempting to use cache.insert
"Showjumper" <nlsdkfjawrote in message
news:etdFy2L5HHA.4712@TK2MSFTNGP04.phx.gbl...
Quote:
Hi
I have custom bustom objects whose properties i populate using a
datareader. Is it possible to cache the business object afteri have
populated it? If so, how? Everything i have tried does not work.
>
Ashok
>
>
>


  #5  
Old August 23rd, 2007, 12:05 PM
Paul
Guest
 
Posts: n/a
Default Re: Caching business objects?

Here is what we use ( in a static class )
Be aware that Cache is global and NOT session based.

#region checkCache
/// <summary>
/// Will test for the requested value in the Session Cache.
/// </summary>
/// <typeparam name="T">Type of cached object</typeparam>
/// <param name="sKey">Key to search on</param>
/// <returns>T</returns>
public static T checkCache<T>(string sKey)
{
T returnValue = default(T);

if (HttpContext.Current != null)
{
object oValue = HttpContext.Current.Cache.Get(sKey);

if (oValue is T)
{
returnValue = (T)oValue;
}
}

return returnValue;
}
#endregion

#region cacheItem
/// <summary>
/// Cache items to the session chache for a set number of
minutes.
/// </summary>
/// <param name="sKey"></param>
/// <param name="oItem"></param>
/// <param name="cacheMinutes"></param>
public static void cacheItem(string sKey, object oItem, int
cacheMinutes)
{
if (HttpContext.Current != null && oItem != null)
{
Cache cache = HttpContext.Current.Cache;

object oExistingItem = cache.Get(sKey);

// If the item is already cached
if (oExistingItem != null)
{
cache.Remove(sKey);
}

cache.Add(sKey, oItem, null,
DateTime.Now.AddMinutes(cacheMinutes), Cache.NoSlidingExpiration,
CacheItemPriority.Normal, null);

}
}
#endregion

#region expireCacheItem
/// <summary>
/// Removes an item from the Cache.
/// </summary>
/// <param name="sKey"></param>
public static void expireCacheItem(string sKey)
{
if (HttpContext.Current != null)
{
HttpContext.Current.Cache.Remove(sKey);
}
}
#endregion

  #6  
Old August 23rd, 2007, 12:05 PM
Paul
Guest
 
Posts: n/a
Default Re: Caching business objects?

An example of calling that code using the Session ID to make is
session specific in this case.

string sCacheKey = "CMSContext{0}{1}";
sCacheKey = string.Format(sCacheKey,
loggedOnUser.GUID, Session.SessionID);

CMSContext currentContext =
util.checkCache<CMSContext>(sCacheKey);

if (currentContext == null)
{
currentContext = new CMSContext(Session,
loggedOnUser);
}

// Unlike most cache Items we refresh the Cache of
this Item every time it is accessed
util.cacheItem(sCacheKey, currentContext, 20);

 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,662 network members.