mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 FreeSqlBuilder UseQuoteSqlName 设置不使用 [] `` "" 限定符号;
This commit is contained in:
		@@ -1336,7 +1336,7 @@
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="dataType">数据库类型</param>
 | 
			
		||||
            <param name="connectionString">数据库连接串</param>
 | 
			
		||||
            <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场</param>
 | 
			
		||||
            <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场<para></para>例如:typeof(FreeSql.SqlServer.SqlServerProvider<>)</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSlave(System.String[])">
 | 
			
		||||
@@ -1352,7 +1352,7 @@
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="dataType">数据库类型</param>
 | 
			
		||||
            <param name="connectionFactory">数据库连接对象创建器</param>
 | 
			
		||||
            <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场</param>
 | 
			
		||||
            <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场<para></para>例如:typeof(FreeSql.SqlServer.SqlServerProvider<>)</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseAutoSyncStructure(System.Boolean)">
 | 
			
		||||
@@ -1439,29 +1439,6 @@
 | 
			
		||||
            <param name="value"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToLower(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转小写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToUpper(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转大写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseEntityPropertyNameConvert(FreeSql.Internal.StringConvertType)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            自动转换实体属性名称 Entity Property -> Db Filed
 | 
			
		||||
            <para></para>
 | 
			
		||||
            *不会覆盖 [Column] 特性设置的Name
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="convertType"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IDelete`1.WithTransaction(System.Data.Common.DbTransaction)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            指定事务对象
 | 
			
		||||
@@ -4174,46 +4151,6 @@
 | 
			
		||||
            BigApple -> bigapple
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.None">
 | 
			
		||||
            <summary>
 | 
			
		||||
            不进行任何处理
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscore">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将帕斯卡命名字符串转换为下划线分隔字符串
 | 
			
		||||
            <para></para>
 | 
			
		||||
            BigApple -> Big_Apple
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscoreWithUpper">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
 | 
			
		||||
            <para></para>
 | 
			
		||||
            BigApple -> BIG_APPLE
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscoreWithLower">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
 | 
			
		||||
            <para></para>
 | 
			
		||||
            BigApple -> big_apple
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.Upper">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将字符串转换为大写
 | 
			
		||||
            <para></para>
 | 
			
		||||
            BigApple -> BIGAPPLE
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Internal.StringConvertType.Lower">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将字符串转换为小写
 | 
			
		||||
            <para></para>
 | 
			
		||||
            BigApple -> bigapple
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Internal.GlobalFilter.Apply``1(System.String,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            创建一个过滤器<para></para>
 | 
			
		||||
 
 | 
			
		||||
@@ -18,15 +18,13 @@ namespace FreeSql
 | 
			
		||||
        int[] _slaveWeights;
 | 
			
		||||
        Func<DbConnection> _connectionFactory;
 | 
			
		||||
        bool _isAutoSyncStructure = false;
 | 
			
		||||
        bool _isSyncStructureToLower = false;
 | 
			
		||||
        bool _isSyncStructureToUpper = false;
 | 
			
		||||
        bool _isConfigEntityFromDbFirst = false;
 | 
			
		||||
        bool _isNoneCommandParameter = false;
 | 
			
		||||
        bool _isGenerateCommandParameterWithLambda = false;
 | 
			
		||||
        bool _isLazyLoading = false;
 | 
			
		||||
        bool _isExitAutoDisposePool = true;
 | 
			
		||||
        bool _isQuoteSqlName = true;
 | 
			
		||||
        MappingPriorityType[] _mappingPriorityTypes;
 | 
			
		||||
        StringConvertType _entityPropertyConvertType = StringConvertType.None;
 | 
			
		||||
        NameConvertType _nameConvertType = NameConvertType.None;
 | 
			
		||||
        Action<DbCommand> _aopCommandExecuting = null;
 | 
			
		||||
        Action<DbCommand, string> _aopCommandExecuted = null;
 | 
			
		||||
@@ -37,7 +35,7 @@ namespace FreeSql
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="dataType">数据库类型</param>
 | 
			
		||||
        /// <param name="connectionString">数据库连接串</param>
 | 
			
		||||
        /// <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场</param>
 | 
			
		||||
        /// <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场<para></para>例如:typeof(FreeSql.SqlServer.SqlServerProvider<>)</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public FreeSqlBuilder UseConnectionString(DataType dataType, string connectionString, Type providerType = null)
 | 
			
		||||
        {
 | 
			
		||||
@@ -69,7 +67,7 @@ namespace FreeSql
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="dataType">数据库类型</param>
 | 
			
		||||
        /// <param name="connectionFactory">数据库连接对象创建器</param>
 | 
			
		||||
        /// <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场</param>
 | 
			
		||||
        /// <param name="providerType">提供者的类型,一般不需要指定,如果一直提示“缺少 FreeSql 数据库实现包:FreeSql.Provider.MySql.dll,可前往 nuget 下载”的错误,说明反射获取不到类型,此时该参数可排上用场<para></para>例如:typeof(FreeSql.SqlServer.SqlServerProvider<>)</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public FreeSqlBuilder UseConnectionFactory(DataType dataType, Func<DbConnection> connectionFactory, Type providerType = null)
 | 
			
		||||
        {
 | 
			
		||||
@@ -161,6 +159,11 @@ namespace FreeSql
 | 
			
		||||
            _nameConvertType = convertType;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        public FreeSqlBuilder UseQuoteSqlName(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isQuoteSqlName = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 指定映射优先级<para></para>
 | 
			
		||||
@@ -337,8 +340,6 @@ namespace FreeSql
 | 
			
		||||
            {
 | 
			
		||||
                ret.CodeFirst.IsAutoSyncStructure = _isAutoSyncStructure;
 | 
			
		||||
 | 
			
		||||
                ret.CodeFirst.IsSyncStructureToLower = _isSyncStructureToLower;
 | 
			
		||||
                ret.CodeFirst.IsSyncStructureToUpper = _isSyncStructureToUpper;
 | 
			
		||||
                ret.CodeFirst.IsConfigEntityFromDbFirst = _isConfigEntityFromDbFirst;
 | 
			
		||||
                ret.CodeFirst.IsNoneCommandParameter = _isNoneCommandParameter;
 | 
			
		||||
                ret.CodeFirst.IsGenerateCommandParameterWithLambda = _isGenerateCommandParameterWithLambda;
 | 
			
		||||
@@ -352,7 +353,6 @@ namespace FreeSql
 | 
			
		||||
                if (_aopCommandExecuted != null)
 | 
			
		||||
                    ret.Aop.CommandAfter += new EventHandler<Aop.CommandAfterEventArgs>((s, e) => _aopCommandExecuted?.Invoke(e.Command, e.Log));
 | 
			
		||||
 | 
			
		||||
                this.EntityPropertyNameConvert(ret);
 | 
			
		||||
                //添加实体属性名全局AOP转换处理
 | 
			
		||||
                if (_nameConvertType != NameConvertType.None)
 | 
			
		||||
                {
 | 
			
		||||
@@ -517,6 +517,8 @@ namespace FreeSql
 | 
			
		||||
                if (_slaveWeights != null)
 | 
			
		||||
                    for (var x = 0; x < _slaveWeights.Length; x++)
 | 
			
		||||
                        ret.Ado.SlavePools[x].Policy.Weight = _slaveWeights[x];
 | 
			
		||||
 | 
			
		||||
                (ret.Select<object>() as Select0Provider)._commonUtils.IsQuoteSqlName = _isQuoteSqlName;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return ret;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,80 +0,0 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data.Common;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using FreeSql.DataAnnotations;
 | 
			
		||||
using FreeSql.Internal;
 | 
			
		||||
 | 
			
		||||
namespace FreeSql
 | 
			
		||||
{
 | 
			
		||||
    partial class FreeSqlBuilder
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转小写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToLower),或者 fsql.CodeFirst.IsSyncStructureToLower = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToLower(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToLower = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转大写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToUpper),或者 fsql.CodeFirst.IsSyncStructureToUpper = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToUpper(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToUpper = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 自动转换实体属性名称 Entity Property -> Db Filed
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// *不会覆盖 [Column] 特性设置的Name
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="convertType"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert 功能")]
 | 
			
		||||
        public FreeSqlBuilder UseEntityPropertyNameConvert(StringConvertType convertType)
 | 
			
		||||
        {
 | 
			
		||||
            _entityPropertyConvertType = convertType;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void EntityPropertyNameConvert(IFreeSql fsql)
 | 
			
		||||
        {
 | 
			
		||||
            //添加实体属性名全局AOP转换处理
 | 
			
		||||
            if (_entityPropertyConvertType != StringConvertType.None)
 | 
			
		||||
            {
 | 
			
		||||
                string PascalCaseToUnderScore(string str) => string.IsNullOrWhiteSpace(str) ? str : string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
 | 
			
		||||
 | 
			
		||||
                switch (_entityPropertyConvertType)
 | 
			
		||||
                {
 | 
			
		||||
                    case StringConvertType.Lower:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.ModifyResult.Name?.ToLower();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.Upper:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.ModifyResult.Name?.ToUpper();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscore:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.ModifyResult.Name);
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscoreWithLower:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.ModifyResult.Name)?.ToLower();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscoreWithUpper:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.ModifyResult.Name)?.ToUpper();
 | 
			
		||||
                        break;
 | 
			
		||||
                    default:
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -28,7 +28,14 @@ namespace FreeSql.Internal
 | 
			
		||||
        public abstract DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value);
 | 
			
		||||
        public abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
 | 
			
		||||
        public abstract string FormatSql(string sql, params object[] args);
 | 
			
		||||
        public abstract string QuoteSqlName(params string[] name);
 | 
			
		||||
 | 
			
		||||
        public bool IsQuoteSqlName = true;
 | 
			
		||||
        public string QuoteSqlName(params string[] name) {
 | 
			
		||||
            if (IsQuoteSqlName) return QuoteSqlNameAdapter(name);
 | 
			
		||||
            if (name == null) return "";
 | 
			
		||||
            return string.Join(".", name);
 | 
			
		||||
        }
 | 
			
		||||
        public abstract string QuoteSqlNameAdapter(params string[] name);
 | 
			
		||||
        public abstract string TrimQuoteSqlName(string name);
 | 
			
		||||
        public abstract string[] SplitTableName(string name);
 | 
			
		||||
        public static string[] GetSplitTableNames(string name, char leftQuote, char rightQuote, int size)
 | 
			
		||||
 
 | 
			
		||||
@@ -79,47 +79,4 @@ namespace FreeSql.Internal
 | 
			
		||||
        ToLower
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public enum StringConvertType
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 不进行任何处理
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        None = 0,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将帕斯卡命名字符串转换为下划线分隔字符串
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// BigApple -> Big_Apple
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        PascalCaseToUnderscore,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// BigApple -> BIG_APPLE
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        PascalCaseToUnderscoreWithUpper,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// BigApple -> big_apple
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        PascalCaseToUnderscoreWithLower,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将字符串转换为大写
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// BigApple -> BIGAPPLE
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Upper,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将字符串转换为小写
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// BigApple -> bigapple
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Lower
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user