我遇到了API的性能问题。这是由于从多个表中检索数据,如下所示
示例:
Users.Include(x => x.UsersAdditionInfo)
.Include(x => x.UserRoles)
.Include(x => x.Location)
注意:这些表中的每一个都包含除位置表之外的近(1,50,000)条记录。
我使用了连接而不是.Include
,然后也遇到了相同的性能问题。
示例:
from ub in users
join ua in UserAdditionalInfo on ub.Id equals ua.UserId
join ur in UserRoles on ub.Id equals ur.UserId
join urs in userRoles on ur.RoleId equals urs.Id
join l in Location on ub.LocationId equals l.Id
into leftLocation
from location in leftLocation.DefaultIfEmpty()
请建议更好的替代方法来查询多个表
答案 0 :(得分:0)
如果您的EDMX可能已配置,则您无需自己加入。 你不能这样做吗
Users.Select(x=> new {
UserRoles = x.UserRoles,
UserAdditionInfo = x.UserAdditionInfo,
Location = x.Location })
等等?
(我捏了一下你的架构,但希望你明白我的观点)
此外,如果这很常见,您也可以始终在SQL Server中创建一个视图并将其添加到EDMX中