[Fact] // Codeplex #960
        public static void LeftOuterJoin_is_not_turned_into_inner_join_if_nullable_foreign_key()
        {
            const string expectedSql =
                @"SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Text] AS [Text],
[Extent3].[Name] AS [Name]
FROM   [dbo].[Posts] AS [Extent1]
LEFT OUTER JOIN [dbo].[Posts] AS [Extent2] ON [Extent1].[ParentPostId] = [Extent2].[Id]
LEFT OUTER JOIN [dbo].[Blogs] AS [Extent3] ON [Extent2].[BlogId] = [Extent3].[Id]
WHERE 1 = [Extent1].[Id]";

            Database.SetInitializer <Codeplex960Context>(null);

            using (var context = new Codeplex960Context())
            {
                context.Configuration.UseDatabaseNullSemantics = true;

                var query = from p in context.Posts where p.Id == 1 select new { p.Id, p.Text, p.ParentPost.Blog.Name };

                QueryTestHelpers.VerifyQuery(query, expectedSql);
            }
        }
        [Fact] // Codeplex #960
        public static void LeftOuterJoin_is_not_turned_into_inner_join_if_nullable_foreign_key()
        {
            const string expectedSql = 
@"SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Text] AS [Text],
[Extent3].[Name] AS [Name]
FROM   [dbo].[Posts] AS [Extent1]
LEFT OUTER JOIN [dbo].[Posts] AS [Extent2] ON [Extent1].[ParentPostId] = [Extent2].[Id]
LEFT OUTER JOIN [dbo].[Blogs] AS [Extent3] ON [Extent2].[BlogId] = [Extent3].[Id]
WHERE 1 = [Extent1].[Id]";

            Database.SetInitializer<Codeplex960Context>(null);

            using (var context = new Codeplex960Context())
            {
                context.Configuration.UseDatabaseNullSemantics = true;

                var query = from p in context.Posts where p.Id == 1 select new { p.Id, p.Text, p.ParentPost.Blog.Name };

                QueryTestHelpers.VerifyQuery(query, expectedSql);
            }
        }