这是我第一次使用EF 6和MySQL。我在使用连接更新LINQ语句时使用导航属性来获取相关数据时遇到了麻烦。
以下是我正在执行以获取用户和所有用户位置的声明。
AspNetUsers.Include("UserLocations")
.Select(u => new {
FullName = u.FullName,
Locations = u.UserLocations.Select(l => l.Title)
})
此语句使用LinqPad4生成以下SQL:
为什么它使用select语句加入而不是在表本身上进行连接,为什么当所需的唯一列是Title时,它会将所有位置列添加到连接中?
以下SQL查询不会更好:
SELECT
u.FullName,
l.Title
FROM AspNetUsers u
JOIN UserLocations ul ON u.Id = ul.UserId
JOIN Locations l ON ul.LocationId = l.LocationId;
这是我第一次使用EF,我已经读过,过去生成的SQL并不是那么好。如果这只是其中一种情况,或者我可以做些什么来最小化生成的SQL,我就会徘徊。
提前谢谢!