Asp.net mvc 2 ASP.NET MVC-缓存IQueryable数据
我发现了这个问题,我想知道是否能够将这个方法用于IQueryable数据Asp.net mvc 2 ASP.NET MVC-缓存IQueryable数据,asp.net-mvc-2,caching,asqueryable,Asp.net Mvc 2,Caching,Asqueryable,我发现了这个问题,我想知道是否能够将这个方法用于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 = (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
您可以这样做是的,但它不会产生预期的效果,因为(假设dc是一个linq到sql数据上下文)IQueryable不是数据的集合,它是一个存储的查询,稍后将执行,您将需要存储一个IList或类似的查询,如果需要,您仍然可以将其作为IQueryable返回,尽管这可能会让其他人感到困惑
在缓存之前使用ToList()。您可以这样做是的,但它不会产生预期的效果,因为(假设dc是linq到sql数据上下文)IQueryable不是数据的集合,它是一个存储的查询,稍后将执行,您将需要存储一个IList或类似内容,如果需要,您仍然可以将其作为IQueryable返回,尽管这可能会让其他人感到困惑
在缓存它之前使用ToList()。这样就行了。但您不应该缓存IQueryable,因为它们保留一个DataContext。首先将数据转换为列表。e、 g.users=dc.users.ToList();那就行了。但您不应该缓存IQueryable,因为它们保留一个DataContext。首先将数据转换为列表。e、 g.users=dc.users.ToList();这正是我所想的。我认为我更好的选择是在我的服务层而不是repo层中使用缓存(与其他人告诉我的相反)。我在repo层中使用AsQueryable,然后从服务层调用repo。我会藏在里面的。谢谢你的见解。这正是我所想的。我认为我更好的选择是在我的服务层而不是repo层中使用缓存(与其他人告诉我的相反)。我在repo层中使用AsQueryable,然后从服务层调用repo。我会藏在里面的。谢谢你的见解。