public void Parse_can_translate()
        {
            var results = Enumerable.ToList(
                from p in _db.Patriarchy
                where p.Id == HierarchyId.GetRoot()
                select HierarchyId.Parse(p.Id.ToString()));

            Assert.Equal(
                condense(@"SELECT hierarchyid::Parse([p].[Id].ToString()) FROM [Patriarchy] AS [p] WHERE [p].[Id] = '/'"),
                condense(_db.Sql));

            Assert.Equal(new[] { HierarchyId.Parse("/") }, results);
        }
        public void HierarchyId_can_be_sent_as_parameter()
        {
            var results = Enumerable.ToList(
                from p in _db.Patriarchy
                where p.Id == HierarchyId.Parse("/1/")
                select p.Name);

            Assert.Equal(
                condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE [p].[Id] = '/1/'"),
                condense(_db.Sql));

            Assert.Equal(new[] { "Isaac" }, results);
        }
        public void GetDescendent_can_translate()
        {
            var results = Enumerable.ToList(
                from p in _db.Patriarchy
                where p.Id.GetLevel() == 0
                select p.Id.GetDescendant(null, null));

            Assert.Equal(
                condense(@"SELECT [p].[Id].GetDescendant(NULL, NULL) FROM [Patriarchy] AS [p] WHERE [p].[Id].GetLevel() = CAST(0 AS smallint)"),
                condense(_db.Sql));

            Assert.Equal(new[] { HierarchyId.Parse("/1/") }, results);
        }
        public void HierarchyId_can_call_method_on_parameter()
        {
            var isaac = HierarchyId.Parse("/1/");

            var results = Enumerable.ToList(
                from p in _db.Patriarchy
                where isaac.IsDescendantOf(p.Id)
                select p.Name);

            Assert.Equal(
                condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE @__isaac_0.IsDescendantOf([p].[Id]) = CAST(1 AS bit)"),
                condense(_db.Sql));

            Assert.Equal(new[] { "Abraham", "Isaac" }, results);
        }