2010-01-25 18 views
2

我在asp.net mvc(C#)中有一个应用程序,其中每个用户都有不同的产品共享一个用用户id分隔的公用表。如何在asp.net中为每个用户使用sqlcachedependency mvc

我需要为每个用户的产品实现SqlCacheDependency

情景是:假设有两个用户(user1和user2)以及根据用户ID分配给他们的产品。

我需要缓存产品使用SqlCacheDependency为每个用户,因为他们不会更新/频繁更改。即使属于user2的产品发生更改,我也需要维护user1的缓存。

如何根据共享公用表的产品的用户标识维护SqlCacheDependency

回答

0

也许这不是SqlCacheDependency需要被用户ID缓存,而是HttpContextCache条目。

这会适合你吗? (我假设userProducts是你DataTableList<Product>适当。

var cmd = new SqlCommand("select * from product where user_id = @user_id"); 
cmd.Parameters.Add("@user_id", userId); 
HttpContext.Current.Cache.Insert(string.Format("products:{0}", userId), userProducts, new SqlCacheDependency(cmd)); 
+0

我刚想到这个主意的,但悲哀的是,该体系结构(如BLL,DAL),我们使用的是不允许在BLL中使用sqlcommand和在DAL中使用System.Web.HttpContext.Current.Cache。是否有其他替代方案?请建议 – Prasad 2010-01-26 05:06:40

+0

通常,BLL中不会有SqlCommand参数,但您应该能够通过DAL执行它,然后在BLL中公开一个调用DAL方法的包装器方法,是否可以在BLL中添加这样一个包装器? – 2010-01-26 15:28:12

相关问题