我正在调查使用EntityFramework版本5的应用程序网络的性能下降。我尝试的一个选项是只检索Id字段,而不是整个对象。但是,在Wireshark中检查,我发现无论如何都会传输所有对象。换句话说,以下两个代码块会导致完全相同的网络活动。有谁知道我怎么能让db只在第一个查询中返回ID?
List<long> test = dbContext.UserActivities
.Where(ua => ua.Activity.Id == activityId)
.Select(ua => ua.User)
.ToList()
.Select(u => u.Id)
.ToList();
List<long> test = dbContext.UserActivities
.Where(ua => ua.Activity.Id == activityId)
.Select(ua => ua.User)
.ToList();
答案 0 :(得分:4)
.ToList()实现了对象。基本上,执行查询。之后的任何事情都是LINQ to Objects。
尝试这样的事情:
List<long> test = dbContext.UserActivities
.Where(ua => ua.Activity.Id == activityId)
.Select(ua => ua.User.Id).ToList();
答案 1 :(得分:2)
List<long> test = dbContext.UserActivities
.Where(ua => ua.Activity.Id == activityId)
.Select(ua => ua.User.Id).ToList();