ASP.NET MVC - кэширование данных IQueryable - PullRequest
1 голос
/ 10 августа 2010

Я нашел этот вопрос Как кэшировать данные в приложении 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

1 Ответ

1 голос
/ 10 августа 2010

Вы можете сделать это, да, но это не даст желаемого эффекта, поскольку (при условии, что dc является контекстом данных linq to sql) IQueryable - это не набор данных, это хранимый запрос, который будет выполнен позже вам нужно будет хранить список IList или аналогичный, при желании вы все равно можете вернуть его как IQueryable, хотя это может сбить с толку других.

Используйте ToList () перед кэшированием.

...