存储库模式和IQueryable 的性能
||
我不知道我是否做对了,但这是存储库中的
Get
方法的外观:
public IQueryable<User> GetUsers(IEnumerable<Expression<Func<User, object>>> eagerLoading)
{
IQueryable<User> query = db.Users.AsNoTracking();
if (eagerLoading != null)
{
foreach (var expression in eagerLoading)
{
query = query.Include(expression);
}
}
return query;
}
可以说我也有一个具有GetCountries
方法的GeographyRepository
,与此类似。
我有2个单独的服务层类,调用这2个单独的存储库,共享相同的DbContext(EF 4.1代码优先)。
因此,在我的控制器中,我会执行以下操作:
myViewModel.User = userService.GetUserById(1);
myViewModel.Countries = geoService.GetCountries();
这是对数据库的2个单独的调用。如果我不使用这些模式并占用接口和数据库,则将有1个调用。我猜这是性能与可维护性的对比。
我的问题是,可以将其推送到1个数据库调用吗?当视图调用多个存储库时,我们可以合并这样的查询吗?
没有找到相关结果
已邀请:
1 个回复
脾萌