Connecting Tech Pros Worldwide Help | Site Map

Caching business objects?

  #1  
Old August 22nd, 2007, 02:15 PM
Showjumper
Guest
 
Posts: n/a
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, 02:45 PM
Eliyahu Goldin
Guest
 
Posts: n/a

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, 03:15 PM
sloan
Guest
 
Posts: n/a

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, 01:25 AM
Showjumper
Guest
 
Posts: n/a

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, 01:05 PM
Paul
Guest
 
Posts: n/a

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, 01:05 PM
Paul
Guest
 
Posts: n/a

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);

Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Winforms Data Caching DylanM answers 4 January 20th, 2006 02:45 PM
Persisting business layer objects headware answers 2 November 18th, 2005 01:30 PM
Business Objects and Session Variables Dave Wurtz answers 8 November 18th, 2005 04:20 AM
Passing Business Objects through nTier Web App Stuart Hilditch answers 25 November 17th, 2005 07:09 AM