public void Can_query_for_strongly_typed_hierarchyid_using_type_construction()
 {
     using (var context = new HierarchyIdNorthwindContext(_connectionString))
     {
         var query =
             @"select value ProductivityApiTests.SupplierWithHierarchyId(-77, N'MyName', Edm.HierarchyIdParse(""/1/"")) 
                       from [HierarchyIdNorthwindContext].[Suppliers] as SupplierWithHierarchyId";
         Assert.Equal(16, TestWithReader(context, query, r => Assert.IsType <HierarchyId>(r.GetValue(2))));
     }
 }
        private void DbQuery_with_TVFs_mapped_to_arbitrary_instance_methods_involving_hierarchyid_types_works(
            Func <IQueryable <IQueryable <SupplierWithHierarchyId> >, List <IQueryable <SupplierWithHierarchyId> > > toList)
        {
            using (var context = new HierarchyIdNorthwindContext(_connectionString))
            {
                var suppliers = (from x in context.Suppliers
                                 select
                                 ArbitrarySuppliersWithinRange(
                                     HierarchyId.Parse("/1/"),
                                     HierarchyId.Parse("/10/"))).ToList();

                Assert.Equal(16, suppliers.Count);
            }
        }
 public void Can_query_for_strongly_typed_hierarchyid_using_complex_type_type_construction()
 {
     using (var context = new HierarchyIdNorthwindContext(_connectionString))
     {
         var query =
             @"select value ProductivityApiTests.ComplexWithHierarchyId(N'A', Edm.HierarchyIdParse(""/1/"")) 
                       from [HierarchyIdNorthwindContext].[Widgets] as WidgetWithHierarchyId";
         Assert.Equal(
             4, TestWithReader(
                 context, query, r =>
         {
             Assert.Equal("A", r.GetString(0));
             Assert.IsType <HierarchyId>(r.GetValue(1));
         }));
     }
 }
 public void Can_query_for_strongly_typed_hierarchyid_using_type_construction2()
 {
     using (var context = new HierarchyIdNorthwindContext(_connectionString))
     {
         var query =
             @"select value ProductivityApiTests.WidgetWithHierarchyId(-77, N'MyName', Edm.HierarchyIdParse(""/1/""), ProductivityApiTests.ComplexWithHierarchyId(N'A', Edm.HierarchyIdParse(""/1/""))) 
                       from [HierarchyIdNorthwindContext].[Widgets] as WidgetWithHierarchyId";
         Assert.Equal(
             4, TestWithReader(
                 context, query, r =>
         {
             Assert.Equal(-77, r.GetInt32(0));
             Assert.IsType <HierarchyId>(r.GetValue(2));
             var nestedRecord = r.GetDataRecord(3);
             Assert.IsType <HierarchyId>(nestedRecord.GetValue(1));
         }));
     }
 }
        Can_materialize_record_containing_hierarchyid_types_and_get_names_of_the_types_without_null_arg_exception(
            Func <IQueryable <DbDataRecord>, List <DbDataRecord> > toList)
        {
            using (var context = new HierarchyIdNorthwindContext(_connectionString))
            {
                var query =
                    @"select o.[Path]
                              from [HierarchyIdNorthwindContext].[Suppliers] as [o]";

                var results = ExecuteESqlQuery(context, query, toList);

                Assert.Equal(16, results.Count);
                foreach (var result in results)
                {
                    Assert.Equal("Path", result.GetName(0)); // GetName would throw
                    Assert.Same(typeof(HierarchyId), result.GetFieldType(0));
                }
            }
        }
        public void DbQuery_SelectMany_with_TVFs_and_hierarchyid_types_works()
        {
            using (var context = new HierarchyIdNorthwindContext(_connectionString))
            {
                var results =
                    (from s1 in
                     context.SuppliersWithinRange(HierarchyId.Parse("/-100/"), HierarchyId.Parse("/100/"))
                     from s2 in
                     context.SuppliersWithinRange(HierarchyId.Parse("/-100/"), HierarchyId.Parse("/100/"))
                     where s1.Name == s2.Name
                     select new
                {
                    s1,
                    s2
                }).ToList();


                Assert.Equal(16, results.Count);
            }
        }
        public void DbQuery_SelectMany_with_TVFs_and_hierarchyid_types_using_Point_and_Point_return_in_function_import_works()
        {
            using (var context = new HierarchyIdNorthwindContext(_connectionString))
            {
                context.Database.Initialize(force: false);

                var results =
                    (from s1 in
                     context.SupplierHierarchyIdsWithinRange(
                         HierarchyId.Parse("/-100/"),
                         HierarchyId.Parse("/100/"))
                     from s2 in
                     context.SupplierHierarchyIdsWithinRange(
                         HierarchyId.Parse("/-100/"),
                         HierarchyId.Parse("/100/"))
                     select new
                {
                    s1,
                    s2
                }).ToList();

                Assert.Equal(256, results.Count);
            }
        }