mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 增加 FreeSqlBuilder UseNameConvert 方法,类名、属性名都生效;
- 调整 FreeSqlBuilder,准备移除 UseEntityPropertyNameConvert/UseSyncStructureToLower/UseSyncStructureToUpper 方法;#260
This commit is contained in:
@ -902,10 +902,11 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IInsert`1.NoneParameter">
|
||||
<member name="M:FreeSql.IInsert`1.NoneParameter(System.Boolean)">
|
||||
<summary>
|
||||
不使用参数化,可通过 IFreeSql.CodeFirst.IsNotCommandParameter 全局性设置
|
||||
</summary>
|
||||
<param name="isNotCommandParameter">是否不使用参数化</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IInsert`1.BatchOptions(System.Int32,System.Int32,System.Boolean)">
|
||||
@ -1937,10 +1938,11 @@
|
||||
<param name="connection"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IUpdate`1.NoneParameter">
|
||||
<member name="M:FreeSql.IUpdate`1.NoneParameter(System.Boolean)">
|
||||
<summary>
|
||||
不使用参数化,可通过 IFreeSql.CodeFirst.IsNotCommandParameter 全局性设置
|
||||
</summary>
|
||||
<param name="isNotCommandParameter">是否不使用参数化</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IUpdate`1.BatchOptions(System.Int32,System.Int32,System.Boolean)">
|
||||
@ -2692,12 +2694,12 @@
|
||||
</member>
|
||||
<member name="P:FreeSql.ICodeFirst.IsSyncStructureToLower">
|
||||
<summary>
|
||||
转小写同步结构
|
||||
转小写同步结构,适用 PostgreSQL
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.ICodeFirst.IsSyncStructureToUpper">
|
||||
<summary>
|
||||
转大写同步结构
|
||||
转大写同步结构,适用 Oracle/达梦
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.ICodeFirst.IsConfigEntityFromDbFirst">
|
||||
@ -3178,14 +3180,52 @@
|
||||
BigApple -> bigapple
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.Internal.StringUtils.PascalCaseToUnderScore(System.String)">
|
||||
<member name="F:FreeSql.Internal.NameConvertType.None">
|
||||
<summary>
|
||||
不进行任何处理
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.PascalCaseToUnderscore">
|
||||
<summary>
|
||||
将帕斯卡命名字符串转换为下划线分隔字符串
|
||||
<para></para>
|
||||
BigApple -> Big_Apple
|
||||
</summary>
|
||||
<param name="str"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.PascalCaseToUnderscoreWithUpper">
|
||||
<summary>
|
||||
将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
|
||||
<para></para>
|
||||
BigApple -> BIG_APPLE
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.PascalCaseToUnderscoreWithLower">
|
||||
<summary>
|
||||
将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
|
||||
<para></para>
|
||||
BigApple -> big_apple
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.UnderscoreToPascalCase">
|
||||
<summary>
|
||||
将下划线分隔字符串命名字符串转换为帕斯卡
|
||||
<para></para>
|
||||
big_apple -> BigApple
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.ToUpper">
|
||||
<summary>
|
||||
将字符串转换为大写
|
||||
<para></para>
|
||||
BigApple -> BIGAPPLE
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.Internal.NameConvertType.ToLower">
|
||||
<summary>
|
||||
将字符串转换为小写
|
||||
<para></para>
|
||||
BigApple -> bigapple
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSqlGlobalExpressionCall.Between(System.DateTime,System.DateTime,System.DateTime)">
|
||||
<summary>
|
||||
|
@ -21,6 +21,7 @@ namespace FreeSql
|
||||
bool _isGenerateCommandParameterWithLambda = false;
|
||||
bool _isLazyLoading = false;
|
||||
StringConvertType _entityPropertyConvertType = StringConvertType.None;
|
||||
NameConvertType _nameConvertType = NameConvertType.None;
|
||||
Action<DbCommand> _aopCommandExecuting = null;
|
||||
Action<DbCommand, string> _aopCommandExecuted = null;
|
||||
Type _providerType = null;
|
||||
@ -82,6 +83,7 @@ namespace FreeSql
|
||||
/// </summary>
|
||||
/// <param name="value">true:转小写, false:不转</param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("请使用 UseNameConvert(NameConvertType.ToLower),或者 fsql.CodeFirst.IsSyncStructureToLower = value")]
|
||||
public FreeSqlBuilder UseSyncStructureToLower(bool value)
|
||||
{
|
||||
_isSyncStructureToLower = value;
|
||||
@ -92,6 +94,7 @@ namespace FreeSql
|
||||
/// </summary>
|
||||
/// <param name="value">true:转大写, false:不转</param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("请使用 UseNameConvert(NameConvertType.ToUpper),或者 fsql.CodeFirst.IsSyncStructureToUpper = value")]
|
||||
public FreeSqlBuilder UseSyncStructureToUpper(bool value)
|
||||
{
|
||||
_isSyncStructureToUpper = value;
|
||||
@ -163,12 +166,25 @@ namespace FreeSql
|
||||
/// </summary>
|
||||
/// <param name="convertType"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("请使用 UseNameConvert 功能")]
|
||||
public FreeSqlBuilder UseEntityPropertyNameConvert(StringConvertType convertType)
|
||||
{
|
||||
_entityPropertyConvertType = convertType;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
|
||||
/// 优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")]
|
||||
/// </summary>
|
||||
/// <param name="convertType"></param>
|
||||
/// <returns></returns>
|
||||
public FreeSqlBuilder UseNameConvert(NameConvertType convertType)
|
||||
{
|
||||
_nameConvertType = convertType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public IFreeSql Build() => Build<IFreeSql>();
|
||||
public IFreeSql<TMark> Build<TMark>()
|
||||
{
|
||||
@ -263,27 +279,60 @@ namespace FreeSql
|
||||
//添加实体属性名全局AOP转换处理
|
||||
if (_entityPropertyConvertType != StringConvertType.None)
|
||||
{
|
||||
string PascalCaseToUnderScore(string str) => string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
|
||||
|
||||
switch (_entityPropertyConvertType)
|
||||
{
|
||||
case StringConvertType.Lower:
|
||||
ret.Aop.ConfigEntityProperty += (_, e) =>
|
||||
e.ModifyResult.Name = e.Property.Name.ToLower();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToLower();
|
||||
break;
|
||||
case StringConvertType.Upper:
|
||||
ret.Aop.ConfigEntityProperty += (_, e) =>
|
||||
e.ModifyResult.Name = e.Property.Name.ToUpper();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToUpper();
|
||||
break;
|
||||
case StringConvertType.PascalCaseToUnderscore:
|
||||
ret.Aop.ConfigEntityProperty += (_, e) =>
|
||||
e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name);
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name);
|
||||
break;
|
||||
case StringConvertType.PascalCaseToUnderscoreWithLower:
|
||||
ret.Aop.ConfigEntityProperty += (_, e) =>
|
||||
e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name).ToLower();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToLower();
|
||||
break;
|
||||
case StringConvertType.PascalCaseToUnderscoreWithUpper:
|
||||
ret.Aop.ConfigEntityProperty += (_, e) =>
|
||||
e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name).ToUpper();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToUpper();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
//添加实体属性名全局AOP转换处理
|
||||
if (_nameConvertType != NameConvertType.None)
|
||||
{
|
||||
string PascalCaseToUnderScore(string str) => string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
|
||||
string UnderScorePascalCase(string str) => string.Join("", str.Split('_').Select(a => a.Length > 0 ? string.Concat(char.ToUpper(a[0]), a.Substring(1)) : ""));
|
||||
|
||||
switch (_nameConvertType)
|
||||
{
|
||||
case NameConvertType.ToLower:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = e.EntityType.Name.ToLower();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToLower();
|
||||
break;
|
||||
case NameConvertType.ToUpper:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = e.EntityType.Name.ToUpper();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToUpper();
|
||||
break;
|
||||
case NameConvertType.PascalCaseToUnderscore:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.EntityType.Name);
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name);
|
||||
break;
|
||||
case NameConvertType.PascalCaseToUnderscoreWithLower:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.EntityType.Name).ToLower();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToLower();
|
||||
break;
|
||||
case NameConvertType.PascalCaseToUnderscoreWithUpper:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.EntityType.Name).ToUpper();
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToUpper();
|
||||
break;
|
||||
case NameConvertType.UnderscoreToPascalCase:
|
||||
ret.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = UnderScorePascalCase(e.EntityType.Name);
|
||||
ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = UnderScorePascalCase(e.Property.Name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -13,11 +13,11 @@ namespace FreeSql
|
||||
bool IsAutoSyncStructure { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转小写同步结构
|
||||
/// 转小写同步结构,适用 PostgreSQL
|
||||
/// </summary>
|
||||
bool IsSyncStructureToLower { get; set; }
|
||||
/// <summary>
|
||||
/// 转大写同步结构
|
||||
/// 转大写同步结构,适用 Oracle/达梦
|
||||
/// </summary>
|
||||
bool IsSyncStructureToUpper { get; set; }
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace FreeSql.Internal
|
||||
using System;
|
||||
|
||||
namespace FreeSql.Internal
|
||||
{
|
||||
public enum StringConvertType
|
||||
{
|
||||
@ -42,4 +44,54 @@
|
||||
/// </summary>
|
||||
Lower
|
||||
}
|
||||
|
||||
public enum NameConvertType
|
||||
{
|
||||
/// <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>
|
||||
/// big_apple -> BigApple
|
||||
/// </summary>
|
||||
UnderscoreToPascalCase,
|
||||
|
||||
/// <summary>
|
||||
/// 将字符串转换为大写
|
||||
/// <para></para>
|
||||
/// BigApple -> BIGAPPLE
|
||||
/// </summary>
|
||||
ToUpper,
|
||||
|
||||
/// <summary>
|
||||
/// 将字符串转换为小写
|
||||
/// <para></para>
|
||||
/// BigApple -> bigapple
|
||||
/// </summary>
|
||||
ToLower
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace FreeSql.Internal
|
||||
{
|
||||
public static class StringUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 将帕斯卡命名字符串转换为下划线分隔字符串
|
||||
/// <para></para>
|
||||
/// BigApple -> Big_Apple
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static string PascalCaseToUnderScore(string str)
|
||||
{
|
||||
return string.Concat(str.Select((x, i) =>
|
||||
i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user