从我的存储库中,我使用ToList()方法返回不同的List。
问题是当我在这个返回的结果(即List类型)上运行更多LINQ时,它也会为此生成一个数据库调用。显然,第二个linq calll是纯LINQ to Entity,不应该调用数据库。看下面我在做什么。
List<User> us = userRepository.GetMany(u => filterStatusIds.Contains(u.UserStatus.Id));
if (!string.IsNullOrEmpty(name))
us = (from u in us
where u.DisplayName.Contains(name)
select u).ToList(); // this ToList should not call database
停止此额外数据库调用的任何帮助或想法?
答案 0 :(得分:1)
从存储库返回IEnumerable<User>
或IQueryable<T>
,它不会查询数据库。
在ToList()之后,只有第二次调用会执行此操作。