I've set up a SqlCacheDependency in my Asp.Net application, but the dependency invalidates the cache immediately every time the page is hit.
I think the problem may be with my SQL Query, but it seems to me to meet the requirements on the Special Considerations When Using Query Notifications page on MSDN. Could someone take a look at this query and tell me if I've done something wrong? Thank you.
Here's my query:
Code Snippet
USE [chameleon]
GO
SET ANSI_NULLS ON
GO
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET NUMERIC_ROUNDABORT OFF
GO
SET ARITHABORT ON
GO
ALTER PROCEDURE [dbo].[usp_customers_by_site_id]
@.site_id INT
AS
SELECT
customers.customer_id,
customers.name,
customers.po_prefix,
customers.dt_created,
customers.created_by AS auid,
customers.po_required
FROM dbo.customers
WHERE customers.site_id = @.site_id
AND customers.is_active = 1
and here's the code in my Asp.Net site where I try to use the SqlCacheDependency:
Code Snippet
public List<Customer> GetCustomersBySite(int siteID)
{
List<Customer> customers = new List<Customer>();
if (HttpRuntime.Cache["CustomersBySite" + siteID] != null){
customers = (List<Customer>)HttpRuntime.Cache["CustomersBySite" + siteID];
}
else
{
using (SqlCommand command = new SqlCommand("usp_customers_by_site_id", Connection)){
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@.site_id", SqlDbType.Int).Value = GetDBValue(siteID, false);
SqlCacheDependency dependency = new SqlCacheDependency(command);
try{
Connection.Open();
SqlDataReader reader;
reader = command.ExecuteReader(CommandBehavior.SingleResult);
while (reader.Read()){
customers.Add(PopulateCustomer(reader));
}
HttpRuntime.Cache.Insert("CustomersBySite" + siteID, customers, dependency, DateTime.Now.AddMinutes(Configuration.CacheDuration), System.Web.Caching.Cache.NoSlidingExpiration);
}
finally{
Connection.Close();
}
}
}
return customers;
}
My apologies. I posted this in the wrong forum.
-Brad
No comments:
Post a Comment