sql >> Database teknologi >  >> RDS >> Sqlserver

Er der en praktisk måde at bruge hierarchyID-datatypen i entity framework 4?

Nå, jeg ser ud til at få synspunkter, men ingen svar. Jeg havde nogle umiddelbare behov for at arbejde med hierarkistrukturen over SQL, så jeg sammensatte en statisk hjælperklasse. Jeg betragter det ikke som en komplet løsning, men indtil videre fungerer det relativt godt. PadPath er virkelig den kritiske funktion her.

public static class SQLHierarchyManipulatin {
    const int   DEFAULT_PAD_LEN     = 3;
    const char  DEFAULT_PAD_CHAR    = '0';

    public static string PadPath(string Hierarchy) {
        return PadPath (Hierarchy, DEFAULT_PAD_LEN);
    }       
    public static string PadPath(string Hierarchy, int padLen) {
        string[]    components  = Hierarchy.Split('/');

        for (var i = 0; i < components.Length; i++ ) {
            if (components[i] != "") {
                components[i] = components[i].PadLeft(padLen, DEFAULT_PAD_CHAR);
            }
        }
        return string.Join("/", components);
    }

    public static int CurrentNodeIndex(string Hierarchy) {
        string[]    components  = Hierarchy.Split('/');
        string      startItem   = components[components.Length - 2]; //one slot back from trailing slash

        return int.Parse(startItem);
    }

    public static string ParentPath (string Hierarchy) {
        return  Hierarchy.Substring(0, Hierarchy.TrimEnd('/').LastIndexOf('/') + 1);
    }

    public static string AppendChildWithPadding (string Hierarchy, int childIndex, int padLen) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChildWithPadding (string Hierarchy, int childIndex) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChild (string Hierarchy, int childIndex) {
        return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
    }
    public static string AppendChild (string Hierarchy, int childIndex, int padLen) {
        return Hierarchy + childIndex.ToString().PadLeft(padLen, DEFAULT_PAD_CHAR) + "/";
    }
}

Håber dette hjælper nogen! Selvom jeg stadig gerne vil høre fra folk.




  1. hvilken datatype skal bruges til et felt, der kan indeholde en værdi fra foruddefinerede værdier i en databasetabel?

  2. Forsøger at bestille bord flere gange

  3. mysql gemmer automatisk tidsstempel for oprettelse af rekorder

  4. Python 3 og mysql gennem SQLAlchemy