【问题标题】:how to use sqlcachedependency for each user in asp.net mvc如何在asp.net mvc中为每个用户使用sqlcachedependency
【发布时间】:2010-01-25 18:26:23
【问题描述】:

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

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

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

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

对于共享公用表的产品,我如何根据用户 ID 维护 SqlCacheDependency

【问题讨论】:

    标签: asp.net-mvc caching sqlcachedependency


    【解决方案1】:

    可能需要用户id缓存的不是SqlCacheDependency,而是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));
    

    【讨论】:

    • 我刚刚想到了这个想法。但可悲的是,我们使用的架构(如 BLL、DAL)不允许在 BLL 中使用 sqlcommand 和在 DAL 中使用 System.Web.HttpContext.Current.Cache。还有其他选择吗?请建议
    • 通常你不会在 BLL 中有一个 SqlCommand 参数,但你应该能够通过 DAL 来做到这一点。然后,您将在调用 DAL 方法的 BLL 中公开一个包装器方法。是否可以在 BLL 中添加这样的包装器?
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 2011-03-18
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多