-
-
Save alfeg/1113770 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*db.Blogs | |
.Include("Posts") | |
.Include("Posts.Comments") | |
.Where(x => x.Id == 1) | |
.ToList();*/ | |
SELECT [Project2].[Id] AS [Id], | |
[Project2].[Title] AS [Title], | |
[Project2].[Subtitle] AS [Subtitle], | |
[Project2].[AllowsComments] AS [AllowsComments], | |
[Project2].[CreatedAt] AS [CreatedAt], | |
[Project2].[C1] AS [C1], | |
[Project2].[C4] AS [C2], | |
[Project2].[Id1] AS [Id1], | |
[Project2].[Title1] AS [Title1], | |
[Project2].[Text] AS [Text], | |
[Project2].[PostedAt] AS [PostedAt], | |
[Project2].[BlogId] AS [BlogId], | |
[Project2].[UserId] AS [UserId], | |
[Project2].[C3] AS [C3], | |
[Project2].[C2] AS [C4], | |
[Project2].[Id2] AS [Id2], | |
[Project2].[Name] AS [Name], | |
[Project2].[Email] AS [Email], | |
[Project2].[HomePage] AS [HomePage], | |
[Project2].[Ip] AS [Ip], | |
[Project2].[Text1] AS [Text1], | |
[Project2].[PostId] AS [PostId] | |
FROM (SELECT [Extent1].[Id] AS [Id], | |
[Extent1].[Title] AS [Title], | |
[Extent1].[Subtitle] AS [Subtitle], | |
[Extent1].[AllowsComments] AS [AllowsComments], | |
[Extent1].[CreatedAt] AS [CreatedAt], | |
1 AS [C1], | |
[Project1].[Id] AS [Id1], | |
[Project1].[Title] AS [Title1], | |
[Project1].[Text] AS [Text], | |
[Project1].[PostedAt] AS [PostedAt], | |
[Project1].[BlogId] AS [BlogId], | |
[Project1].[UserId] AS [UserId], | |
[Project1].[Id1] AS [Id2], | |
[Project1].[Name] AS [Name], | |
[Project1].[Email] AS [Email], | |
[Project1].[HomePage] AS [HomePage], | |
[Project1].[Ip] AS [Ip], | |
[Project1].[Text1] AS [Text1], | |
[Project1].[PostId] AS [PostId], | |
CASE | |
WHEN ([Project1].[C1] IS NULL) THEN CAST(NULL AS int) | |
ELSE CASE | |
WHEN ([Project1].[Id1] IS NULL) THEN CAST(NULL AS int) | |
ELSE 1 | |
END | |
END AS [C2], | |
CASE | |
WHEN ([Project1].[C1] IS NULL) THEN CAST(NULL AS int) | |
ELSE CASE | |
WHEN ([Project1].[Id1] IS NULL) THEN CAST(NULL AS int) | |
ELSE 1 | |
END | |
END AS [C3], | |
[Project1].[C1] AS [C4] | |
FROM [dbo].[Blogs] AS [Extent1] | |
LEFT OUTER JOIN (SELECT [Extent2].[Id] AS [Id], | |
[Extent2].[Title] AS [Title], | |
[Extent2].[Text] AS [Text], | |
[Extent2].[PostedAt] AS [PostedAt], | |
[Extent2].[BlogId] AS [BlogId], | |
[Extent2].[UserId] AS [UserId], | |
[Extent3].[Id] AS [Id1], | |
[Extent3].[Name] AS [Name], | |
[Extent3].[Email] AS [Email], | |
[Extent3].[HomePage] AS [HomePage], | |
[Extent3].[Ip] AS [Ip], | |
[Extent3].[Text] AS [Text1], | |
[Extent3].[PostId] AS [PostId], | |
1 AS [C1] | |
FROM [dbo].[Posts] AS [Extent2] | |
LEFT OUTER JOIN [dbo].[Comments] AS [Extent3] | |
ON [Extent2].[Id] = [Extent3].[PostId]) AS [Project1] | |
ON [Extent1].[Id] = [Project1].[BlogId] | |
WHERE 1 = [Extent1].[Id]) AS [Project2] | |
ORDER BY [Project2].[Id] ASC, | |
[Project2].[C4] ASC, | |
[Project2].[Id1] ASC, | |
[Project2].[C3] ASC | |
//4.1 | |
/* Same Query */ | |
SELECT | |
[Project1].[Id] AS [Id], | |
[Project1].[Name] AS [Name], | |
[Project1].[C2] AS [C1], | |
[Project1].[Id1] AS [Id1], | |
[Project1].[Topic] AS [Topic], | |
[Project1].[Body] AS [Body], | |
[Project1].[PostDate] AS [PostDate], | |
[Project1].[Blog_Id] AS [Blog_Id], | |
[Project1].[C1] AS [C2], | |
[Project1].[Id2] AS [Id2], | |
[Project1].[Text] AS [Text], | |
[Project1].[Posted] AS [Posted], | |
[Project1].[Post_Id] AS [Post_Id] | |
FROM ( SELECT | |
[Extent1].[Id] AS [Id], | |
[Extent1].[Name] AS [Name], | |
[Join1].[Id1] AS [Id1], | |
[Join1].[Topic] AS [Topic], | |
[Join1].[Body] AS [Body], | |
[Join1].[PostDate] AS [PostDate], | |
[Join1].[Blog_Id] AS [Blog_Id], | |
[Join1].[Id2] AS [Id2], | |
[Join1].[Text] AS [Text], | |
[Join1].[Posted] AS [Posted], | |
[Join1].[Post_Id] AS [Post_Id], | |
CASE WHEN ([Join1].[Id1] IS NULL) THEN CAST(NULL AS int) WHEN ([Join1].[Id2] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1], | |
CASE WHEN ([Join1].[Id1] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2] | |
FROM [Blogs] AS [Extent1] | |
LEFT OUTER JOIN (SELECT [Extent2].[Id] AS [Id1], [Extent2].[Topic] AS [Topic], [Extent2].[Body] AS [Body], | |
[Extent2].[PostDate] AS [PostDate], [Extent2].[Blog_Id] AS [Blog_Id], [Extent3].[Id] AS [Id2], [Extent3].[Text] AS [Text], | |
[Extent3].[Posted] AS [Posted], [Extent3].[Post_Id] AS [Post_Id] | |
FROM [Posts] AS [Extent2] | |
LEFT OUTER JOIN [Comments] AS [Extent3] ON [Extent2].[Id] = [Extent3].[Post_Id] ) AS [Join1] ON [Extent1].[Id] = [Join1].[Blog_Id] | |
WHERE 1 = [Extent1].[Id] | |
) AS [Project1] | |
ORDER BY [Project1].[Id] ASC, [Project1].[C2] ASC, [Project1].[Id1] ASC, [Project1].[C1] ASC | |
//Code | |
public class Blog | |
{ | |
public virtual List<Post> Posts { get; set; } | |
public string Name { get; set; } | |
public int Id { get; set; } | |
} | |
public class Post | |
{ | |
public int Id { get; set; } | |
public string Topic { get; set; } | |
public string Body { get; set; } | |
public DateTime PostDate { get; set; } | |
public virtual List<Comment> Comments { get; set; } | |
} | |
public class Comment | |
{ | |
public int Id { get; set; } | |
public string Text { get; set; } | |
public DateTime Posted { get; set; } | |
} | |
public class BlogContext : System.Data.Entity.DbContext | |
{ | |
public DbSet<Blog> Blogs { get; set; } | |
} | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
var sqlCeConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); | |
Database.DefaultConnectionFactory = sqlCeConnectionFactory; | |
using (var db = new BlogContext()) | |
{ | |
var blogsQuery = db.Blogs | |
.Include("Posts") | |
.Include("Posts.Comments") | |
.Where(x => x.Id == 1); | |
Console.WriteLine(blogsQuery.ToString()); | |
var result = blogsQuery.ToList(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment