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 GetAncestor_3_can_translate() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id.GetLevel() == 3 select p.Id.GetAncestor(3)); Assert.Equal( condense(@"SELECT [p].[Id].GetAncestor(3) FROM [Patriarchy] AS [p] WHERE [p].[Id].GetLevel() = CAST(3 AS smallint)"), condense(_db.Sql)); Assert.All(results, h => Assert.Equal(HierarchyId.GetRoot(), h)); }
public void HierarchyId_get_ancestor_of_level_is_root() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id.GetAncestor(p.Id.GetLevel()) == HierarchyId.GetRoot() // HierarchyId.Parse("/1/") // HierarchyId.Parse(p.Id.ToString()).GetAncestor(HierarchyId.Parse(p.Id.ToString()).GetLevel()) select p.Name); Assert.Equal( condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE [p].[Id].GetAncestor(CAST([p].[Id].GetLevel() AS int)) = '/'"), condense(_db.Sql)); var all = Enumerable.ToList( from p in _db.Patriarchy select p.Name); Assert.Equal(all, results); }