我在我的DbContext中有以下模型类:

每次我渲染LoanApplication对象列表时,我会像这样做:
var context = new MyContext();
var applications = context.LoanApplications.Where(d => d.PropertyThatIWantToFilter = localVariable);
这将返回一个IQueryable,然后我在控制器方法调用时将其转换为ViewModel,如下所示:
var vm = applications.Select(d => new LoanApplicationViewModel(d));
在LoanApplicationViewModel构造函数中,我接受实体对象并进行相应的映射。问题在于,由于律师集合是一个导航属性,每次实例化新视图模型时,都会对数据库发出调用。每个申请平均有两名律师,这意味着如果我渲染一个列出最近10个申请的表格,那么该应用程序将对数据库进行约18-20次访问。
我认为必须有更好的方法来获取此集合,因此我将原始查询更改为主动加载集合的方式,如下所示:
var applications = context.LoanApplications.Include("Solicitors").Where...
尽管这样只需要一次对数据库的调用,但查询速度会变慢,大约慢了50%。
我们的数据库托管在SQL Azure上,并且我们已经实现了瞬态故障处理,但我想减少对数据库的调用次数,同时不降低响应时间性能。
这里有什么最佳实践?
