2

我发现了这个问题如何在 MVC 应用程序中缓存数据,我想知道是否能够将此方法与 IQueryable 数据一起使用。

    Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers 
        Dim users = (From u In dc.Users 
                    Select u) 
        Return users.AsQueryable 
    End Function 

我可以将其更改为

    Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers 
       Dim users = Cache("users")
       If users Is Nothing Then
           users = (From u In dc.Users 
                           Select u) 
           Cache("users") = users
       End If

       Return users.AsQueryable
    End Function
4

1 回答 1

2

你可以这样做,但它不会产生预期的效果,因为(假设 dc 是 linq to sql 数据上下文)IQueryable 不是数据集合,它是稍后执行的存储查询,你需要存储一个 IList 或类似的,如果需要,您仍然可以将其作为 IQueryable 返回,尽管这可能会让其他人感到困惑。

在缓存之前使用 ToList()。

于 2010-08-09T22:57:19.180 回答