我正在调查使用EntityFramework版本5的应用程序的网络性能低下。我尝试的一个选项是仅检索Id字段,而不是整个对象。但是,在Wireshark中检查,我发现无论如何都会传输所有对象。换句话说,以下两个代码块会导致完全相同的网络活动。有谁知道我可以如何导致数据库仅在第一个查询中返回Ids?为什么EntityFramework只返回一列时才返回整个对象?
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();
'.ToList()'物化的对象。基本上,执行查询。之后的任何事情都是LINQ to Objects。 – James