So I have a model
public class Player { public int PlayerId { get; set; } [Required] public string Name2 { get; set; } public string Cv { get; set; } public int TeamId { get; set; } public virtual Team Team { get; set; } } public class Team { public int TeamId { get; set; } [Required] public string Name { get; set; } public string City { get; set; } public DateTime Founded { get; set; } public virtual IList<Player> Players { get; set; } } My Teams table in DB contains records, my Players table in DB does not contain any (empty).
When I run this query:
IQueryable<Player> query = playerRepository.All.Include(p => p.Team); return View((query); I get this query in DB (via profiler):
SELECT [Project1].[TeamId] AS [TeamId], [Project1].[Name] AS [Name], [Project1].[City] AS [City], [Project1].[Founded] AS [Founded], [Project1].[C1] AS [C1], [Project1].[PlayerId] AS [PlayerId], [Project1].[Name2] AS [Name2], [Project1].[Cv] AS [Cv], [Project1].[TeamId1] AS [TeamId1] FROM ( SELECT [Limit1].[TeamId] AS [TeamId], [Limit1].[Name] AS [Name], [Limit1].[City] AS [City], [Limit1].[Founded] AS [Founded], [Extent2].[PlayerId] AS [PlayerId], [Extent2].[Name2] AS [Name2], [Extent2].[Cv] AS [Cv], [Extent2].[TeamId] AS [TeamId1], CASE WHEN ([Extent2].[PlayerId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1] FROM ( SELECT TOP (10) [c].[TeamId] AS [TeamId], [c].[Name] AS [Name], [c].[City] AS [City], [c].[Founded] AS [Founded] /* HERE */ FROM [dbo].[Teams] AS [c] ) AS [Limit1] /* AND HERE */ LEFT OUTER JOIN [dbo].[Players] AS [Extent2] ON [Limit1].[TeamId] = [Extent2].[TeamId] ) AS [Project1] ORDER BY [Project1].[TeamId] ASC, [Project1].[C1] ASC Which as a result I get one empty row shown on the screen. This is because this joins are done in wrong order...instead of joining Teams on Players, I get Players on Teams...which in turn means that even though I have NO players in the DB, I get an empty row in the grid.
Anyone have any ideas why???
Vladan
TOP(10)come from? What is hidden behind your repository?