示例#1
0
        /// <summary>
        /// 根据大小写规则转换名称
        /// </summary>
        /// <param name="name">类型名或者属性名</param>
        /// <param name="strategy">列名映射策略</param>
        /// <param name="rule">大小写规则</param>
        /// <returns></returns>
        private static string Parse(string name, DbIdentifierMappingStrategy strategy, CapitalizationRule rule)
        {
            var result = Parse(name, strategy);

            switch (rule)
            {
            case CapitalizationRule.LowerCase:
                return(result.ToLower());

            case CapitalizationRule.UpperCase:
                return(result.ToUpper());

            case CapitalizationRule.Original:
                return(result);
            }
            return(result.ToLower());
        }
示例#2
0
        /// <summary>
        /// 根据列名映射策略转换名称
        /// </summary>
        /// <param name="name">类型名或者属性名</param>
        /// <param name="strategy">列名映射策略</param>
        /// <returns></returns>
        private static string Parse(string name, DbIdentifierMappingStrategy strategy)
        {
            if (strategy == DbIdentifierMappingStrategy.PascalCase)
            {
                return(name);
            }
            var array    = name.ToCharArray();
            var length   = array.Length;
            var builder  = new StringBuilder().Append(array[0]);
            var position = -1;

            for (var i = 1; i < length; i++)
            {
                var current = array[i];
                var prev    = array[i - 1];
                if (char.IsUpper(current))
                {
                    if (char.IsLower(prev))
                    {
                        builder.Append("_").Append(current);
                        position = -1;
                    }
                    else
                    {
                        builder.Append(current);
                        position = i;
                    }
                }
                else
                {
                    builder.Append(current);
                }
            }
            if (position > 0 && char.IsLower(array[position]))
            {
                builder.Insert(position - 1, "_");
            }
            return(builder.ToString());
        }