diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index 7b164deb..9834bfea 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.1.0 + 0.1.1 YeXiangQin 打造 .NETCore 最方便的 ORM,DbFirst 与 CodeFirst 混合使用,提供从实体同步数据库,或者从数据库生成实体代码,支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite 数据库。 https://github.com/2881099/FreeSql diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 1b554815..56ddc43a 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.1.0 + 0.1.1 true YeXiangQin 打造 .NETCore 最方便的 ORM,DbFirst 与 CodeFirst 混合使用,提供从实体同步数据库,或者从数据库生成实体代码,支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite 数据库。 diff --git a/FreeSql/FreeSqlBuilder.cs b/FreeSql/FreeSqlBuilder.cs index 3ffde3b3..ed1a9281 100644 --- a/FreeSql/FreeSqlBuilder.cs +++ b/FreeSql/FreeSqlBuilder.cs @@ -13,6 +13,7 @@ namespace FreeSql { string _masterConnectionString; string[] _slaveConnectionString; bool _isAutoSyncStructure = false; + bool _isQuoteSqlName = true; bool _isSyncStructureToLower = false; bool _isLazyLoading = false; Action _aopCommandExecuting = null; @@ -67,6 +68,15 @@ namespace FreeSql { return this; } /// + /// 数据库名称使用 [] 或 `` 或 "" 包含起来,取决于数据库类别 + /// + /// true:转小写, false:不转 + /// + public FreeSqlBuilder UseQuoteSqlName(bool value) { + _isQuoteSqlName = value; + return this; + } + /// /// 转小写同步结构 /// /// true:转小写, false:不转 @@ -107,6 +117,7 @@ namespace FreeSql { } if (ret != null) { ret.CodeFirst.IsAutoSyncStructure = _isAutoSyncStructure; + ret.CodeFirst.IsQuoteSqlName = _isQuoteSqlName; ret.CodeFirst.IsSyncStructureToLower = _isSyncStructureToLower; ret.CodeFirst.IsLazyLoading = _isLazyLoading; var ado = ret.Ado as Internal.CommonProvider.AdoProvider; diff --git a/FreeSql/Interface/ICodeFirst.cs b/FreeSql/Interface/ICodeFirst.cs index 50cc363c..972eb69d 100644 --- a/FreeSql/Interface/ICodeFirst.cs +++ b/FreeSql/Interface/ICodeFirst.cs @@ -9,6 +9,10 @@ namespace FreeSql { /// bool IsAutoSyncStructure { get; set; } + /// + /// 数据库名称使用 [] 或 `` 或 "" 包含起来,取决于数据库类别 + /// + bool IsQuoteSqlName { get; set; } /// /// 转小写同步结构 /// diff --git a/FreeSql/MySql/MySqlCodeFirst.cs b/FreeSql/MySql/MySqlCodeFirst.cs index 534a29ef..df1839c0 100644 --- a/FreeSql/MySql/MySqlCodeFirst.cs +++ b/FreeSql/MySql/MySqlCodeFirst.cs @@ -24,6 +24,7 @@ namespace FreeSql.MySql { } public bool IsAutoSyncStructure { get; set; } = true; + public bool IsQuoteSqlName { get; set; } = true; public bool IsSyncStructureToLower { get; set; } = false; public bool IsLazyLoading { get; set; } = false; diff --git a/FreeSql/MySql/MySqlUtils.cs b/FreeSql/MySql/MySqlUtils.cs index 58180b26..f35b110e 100644 --- a/FreeSql/MySql/MySqlUtils.cs +++ b/FreeSql/MySql/MySqlUtils.cs @@ -42,7 +42,7 @@ namespace FreeSql.MySql { }); internal override string FormatSql(string sql, params object[] args) => sql?.FormatMySql(args); - internal override string QuoteSqlName(string name) => $"`{name.Trim('`').Replace(".", "`.`")}`"; + internal override string QuoteSqlName(string name) => _orm.CodeFirst.IsQuoteSqlName ? $"`{name.Trim('`').Replace(".", "`.`")}`" : name; internal override string QuoteParamterName(string name) => $"?{(_orm.CodeFirst.IsSyncStructureToLower ? name.ToLower() : name)}"; internal override string IsNull(string sql, object value) => $"ifnull({sql}, {value})"; internal override string StringConcat(string left, string right, Type leftType, Type rightType) => $"concat({left}, {right})"; diff --git a/FreeSql/Oracle/OracleCodeFirst.cs b/FreeSql/Oracle/OracleCodeFirst.cs index 369d6808..f090e8e3 100644 --- a/FreeSql/Oracle/OracleCodeFirst.cs +++ b/FreeSql/Oracle/OracleCodeFirst.cs @@ -24,6 +24,7 @@ namespace FreeSql.Oracle { } public bool IsAutoSyncStructure { get; set; } = true; + public bool IsQuoteSqlName { get; set; } = true; public bool IsSyncStructureToLower { get; set; } = false; public bool IsLazyLoading { get; set; } = false; diff --git a/FreeSql/Oracle/OracleUtils.cs b/FreeSql/Oracle/OracleUtils.cs index 476bb45e..c13f228e 100644 --- a/FreeSql/Oracle/OracleUtils.cs +++ b/FreeSql/Oracle/OracleUtils.cs @@ -38,7 +38,7 @@ namespace FreeSql.Oracle { }); internal override string FormatSql(string sql, params object[] args) => sql?.FormatOracleSQL(args); - internal override string QuoteSqlName(string name) => $"\"{name.Trim('"').Replace(".", "\".\"")}\""; + internal override string QuoteSqlName(string name) => _orm.CodeFirst.IsQuoteSqlName ? $"\"{name.Trim('"').Replace(".", "\".\"")}\"" : name; internal override string QuoteParamterName(string name) => $":{(_orm.CodeFirst.IsSyncStructureToLower ? name.ToLower() : name)}"; internal override string IsNull(string sql, object value) => $"nvl({sql}, {value})"; internal override string StringConcat(string left, string right, Type leftType, Type rightType) => $"{left} || {right}"; diff --git a/FreeSql/PostgreSQL/PostgreSQLCodeFirst.cs b/FreeSql/PostgreSQL/PostgreSQLCodeFirst.cs index 49c808bb..fd8f8703 100644 --- a/FreeSql/PostgreSQL/PostgreSQLCodeFirst.cs +++ b/FreeSql/PostgreSQL/PostgreSQLCodeFirst.cs @@ -29,6 +29,7 @@ namespace FreeSql.PostgreSQL { } public bool IsAutoSyncStructure { get; set; } = true; + public bool IsQuoteSqlName { get; set; } = true; public bool IsSyncStructureToLower { get; set; } = false; public bool IsLazyLoading { get; set; } = false; diff --git a/FreeSql/PostgreSQL/PostgreSQLUtils.cs b/FreeSql/PostgreSQL/PostgreSQLUtils.cs index d0d972e2..df72a8e0 100644 --- a/FreeSql/PostgreSQL/PostgreSQLUtils.cs +++ b/FreeSql/PostgreSQL/PostgreSQLUtils.cs @@ -94,7 +94,7 @@ namespace FreeSql.PostgreSQL { }); internal override string FormatSql(string sql, params object[] args) => sql?.FormatPostgreSQL(args); - internal override string QuoteSqlName(string name) => $"\"{name.Trim('"').Replace(".", "\".\"")}\""; + internal override string QuoteSqlName(string name) => _orm.CodeFirst.IsQuoteSqlName ? $"\"{name.Trim('"').Replace(".", "\".\"")}\"" : name; internal override string QuoteParamterName(string name) => $"@{(_orm.CodeFirst.IsSyncStructureToLower ? name.ToLower() : name)}"; internal override string IsNull(string sql, object value) => $"coalesce({sql}, {value})"; internal override string StringConcat(string left, string right, Type leftType, Type rightType) => $"{left} || {right}"; diff --git a/FreeSql/SqlServer/SqlServerCodeFirst.cs b/FreeSql/SqlServer/SqlServerCodeFirst.cs index 1e69912a..f9b256b8 100644 --- a/FreeSql/SqlServer/SqlServerCodeFirst.cs +++ b/FreeSql/SqlServer/SqlServerCodeFirst.cs @@ -23,6 +23,7 @@ namespace FreeSql.SqlServer { } public bool IsAutoSyncStructure { get; set; } = true; + public bool IsQuoteSqlName { get; set; } = true; public bool IsSyncStructureToLower { get; set; } = false; public bool IsLazyLoading { get; set; } = false; diff --git a/FreeSql/SqlServer/SqlServerUtils.cs b/FreeSql/SqlServer/SqlServerUtils.cs index 26a5b17b..71575122 100644 --- a/FreeSql/SqlServer/SqlServerUtils.cs +++ b/FreeSql/SqlServer/SqlServerUtils.cs @@ -32,7 +32,7 @@ namespace FreeSql.SqlServer { }); internal override string FormatSql(string sql, params object[] args) => sql?.FormatSqlServer(args); - internal override string QuoteSqlName(string name) => $"[{name.TrimStart('[').TrimEnd(']').Replace(".", "].[")}]"; + internal override string QuoteSqlName(string name) => _orm.CodeFirst.IsQuoteSqlName ? $"[{name.TrimStart('[').TrimEnd(']').Replace(".", "].[")}]" : name; internal override string QuoteParamterName(string name) => $"@{(_orm.CodeFirst.IsSyncStructureToLower ? name.ToLower() : name)}"; internal override string IsNull(string sql, object value) => $"isnull({sql}, {value})"; internal override string StringConcat(string left, string right, Type leftType, Type rightType) => $"{(leftType.FullName == "System.String" ? left : $"cast({left} as nvarchar)")} + {(rightType.FullName == "System.String" ? right : $"cast({right} as nvarchar)")}"; diff --git a/FreeSql/Sqlite/SqliteCodeFirst.cs b/FreeSql/Sqlite/SqliteCodeFirst.cs index 54b31bff..3b109abf 100644 --- a/FreeSql/Sqlite/SqliteCodeFirst.cs +++ b/FreeSql/Sqlite/SqliteCodeFirst.cs @@ -23,6 +23,7 @@ namespace FreeSql.Sqlite { } public bool IsAutoSyncStructure { get; set; } = true; + public bool IsQuoteSqlName { get; set; } = true; public bool IsSyncStructureToLower { get; set; } = false; public bool IsLazyLoading { get; set; } = false; diff --git a/FreeSql/Sqlite/SqliteUtils.cs b/FreeSql/Sqlite/SqliteUtils.cs index 6644d130..98a82d56 100644 --- a/FreeSql/Sqlite/SqliteUtils.cs +++ b/FreeSql/Sqlite/SqliteUtils.cs @@ -53,7 +53,7 @@ namespace FreeSql.Sqlite { }); internal override string FormatSql(string sql, params object[] args) => sql?.FormatSqlite(args); - internal override string QuoteSqlName(string name) => $"\"{name.Trim('"').Replace(".", "\".\"")}\""; + internal override string QuoteSqlName(string name) => _orm.CodeFirst.IsQuoteSqlName ? $"\"{name.Trim('"').Replace(".", "\".\"")}\"" : name; internal override string QuoteParamterName(string name) => $"@{(_orm.CodeFirst.IsSyncStructureToLower ? name.ToLower() : name)}"; internal override string IsNull(string sql, object value) => $"ifnull({sql}, {value})"; internal override string StringConcat(string left, string right, Type leftType, Type rightType) => $"{left} || {right}";