ASP.NET MVC - кэширование данных IQueryable
Я нашел этот вопрос, как кэшировать данные в приложении 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 ответ
Решение
Вы можете сделать это да, но это не даст желаемого эффекта, поскольку (при условии, что dc является контекстом данных linq to sql) IQueryable - это не набор данных, это хранимый запрос, который будет выполнен позже, вам потребуется храня IList или аналогичный, вы все равно можете при желании вернуть его как IQueryable, хотя это может сбить с толку других.
Используйте ToList() перед его кэшированием.