sql >> Database >  >> RDS >> Sqlserver

Is er een praktische manier om het hiërarchieID-gegevenstype in entiteitsraamwerk 4 te gebruiken?

Het lijkt erop dat ik meningen krijg, maar geen reacties. Ik had wat onmiddellijke behoefte om te werken met de hiërarchiestructuur boven SQL, dus ik stelde een statische helperklasse samen. Ik beschouw dit niet als een complete oplossing, maar tot nu toe werkt het relatief goed. PadPath is hier echt de kritieke functie.

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) + "/";
    }
}

Hoop dat dit iemand helpt! Hoewel, ik zou nog steeds graag van mensen horen.




  1. Selecteer groepen rijen met elk een bepaalde waarde in MySQL

  2. Kan ik WHERE col LIKE '%' ook NULL-waarden laten selecteren?

  3. Bekijk de taakgeschiedenis van SQL Server Agent met SSMS

  4. Hoe krijg ik het huidige jaar met SQL op Oracle?