ADO.NET Data Access Template
04 Oct 2008Here’s a basic ADO.NET data access template with a SqlCacheDependency. Just wanted to post this for my future reference.
public static DataSet GetData(long itemID) { DataSet ds = new DataSet(); string cacheKey = Helpers.GetCacheKey(itemID); //Get a cache key unique to this method. if (HttpContext.Current.Cache[cacheKey] != null) { ds = (DataSet)HttpContext.Current.Cache[cacheKey]; } else { using (SqlConnection sqlConnection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { using (SqlCommand sqlCommand = new SqlCommand()) { sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandText = "sp_Items_GetItemByID"; sqlCommand.Parameters.Add("@itemID", SqlDbType.BigInt).Value = itemID; sqlConnection.Open(); using (SqlDataAdapter da = new SqlDataAdapter(sqlCommand)) { da.Fill(ds); } } } SqlCacheDependency sqlCacheDependency = new System.Web.Caching.SqlCacheDependency(WebConfigurationManager.AppSettings["DatabaseName"], "Items"); HttpContext.Current.Cache.Insert(cacheKey, ds, sqlCacheDependency, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration); } return ds; }
Note that I’ve employed most of the recommended best practices like caching, “using” keywords, stored procedures and connection string inside web.config.