sql >> データベース >  >> RDS >> Sqlserver

エンティティ フレームワーク 4 で hierarchyID データ型を使用する実用的な方法はありますか?

    ええと、私はビューを取得しているようですが、応答はありません。 SQL の上の階層構造を扱う必要がすぐにあったので、静的ヘルパー クラスをまとめました。これが完全な解決策だとは思いませんが、これまでのところ比較的うまく機能しています。 PadPath ここでは本当に重要な機能です。

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

    これが誰かを助けることを願っています!とはいえ、私はまだ人々から話を聞きたいと思っています.




    1. C++プログラムとOracleの接続

    2. LinuxでSQLServer認証データベースを使用してSolarWindsServ-Uを使用する

    3. SQL Server接続文字列を設定するにはどうすればよいですか?

    4. ODBC呼び出しがストアドプロシージャで失敗しました-クエリをパススルーします