From ecd27fb3ae08c4f872dc8633242f4cb5aaf7e23e Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 9 Apr 2022 22:40:52 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20InsertDict=20=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=96=B0=E5=8A=9F=E8=83=BD=E9=81=97=E7=95=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98(=E7=89=B9=E5=88=AB=E6=98=AF=20Oracle)=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GBase/Curd/GBaseSelectTest.cs | 6 +++--- .../ConvertTest.cs | 0 .../DateTimeTest.cs | 0 .../MathTest.cs | 0 .../OtherTest.cs | 0 .../StringTest.cs | 0 .../TimeSpanTest.cs | 0 FreeSql.Tests/FreeSql.Tests.Provider.GBase/g.cs | 2 ++ FreeSql.Tests/FreeSql.Tests/Issues/804.cs | 2 +- FreeSql.Tests/FreeSql.Tests/UnitTest5.cs | 2 +- FreeSql/FreeSql.xml | 5 ----- FreeSql/Internal/CommonProvider/InsertProvider.cs | 2 +- .../FreeSql.Provider.ClickHouse/ClickHouseUtils.cs | 4 +++- Providers/FreeSql.Provider.Dameng/DamengUtils.cs | 4 +++- Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs | 2 +- Providers/FreeSql.Provider.GBase/GBaseUtils.cs | 2 +- Providers/FreeSql.Provider.MySql/MySqlUtils.cs | 5 ++++- .../MySqlConnectorUtils.cs | 3 ++- .../FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs | 8 ++++++-- Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs | 6 ++++-- .../FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs | 12 ++++++------ .../FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs | 8 ++++++-- .../SqlServer/Curd/OdbcSqlServerDelete.cs | 8 ++++---- .../SqlServer/Curd/OdbcSqlServerUpdate.cs | 12 ++++++------ Providers/FreeSql.Provider.Oracle/OracleUtils.cs | 6 ++++-- .../Curd/SqlServerDelete.cs | 8 ++++---- .../Curd/SqlServerUpdate.cs | 12 ++++++------ Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs | 2 +- 28 files changed, 69 insertions(+), 52 deletions(-) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/ConvertTest.cs (100%) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/DateTimeTest.cs (100%) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/MathTest.cs (100%) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/OtherTest.cs (100%) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/StringTest.cs (100%) rename FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/{FirebirdExpression => GBaseExpression}/TimeSpanTest.cs (100%) diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs index 5fa9883a..b68f9582 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs @@ -95,7 +95,7 @@ WHERE (a__Parent__Parent.Name = '粤语')", t0); var t1 = g.gbase.Select().Where(a => a.Tags.AsSelect().Any(t => t.Parent.Id == 10)).ToSql(); Assert.Equal(@"SELECT a.Id, a.Parent_id, a.Ddd, a.Name FROM Tag a -WHERE (exists(SELECT FIRST 1 1 +WHERE (exists(SELECT 1 FROM Tag t LEFT JOIN Tag t__Parent ON t__Parent.Id = t.Parent_id WHERE (t__Parent.Id = 10) AND (t.Parent_id = a.Id)))", t1); @@ -104,9 +104,9 @@ WHERE (exists(SELECT FIRST 1 1 var t2 = g.gbase.Select().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); Assert.Equal(@"SELECT a.Id, a.Create_time, a.Is_deleted, a.Title, a.Url FROM Song a -WHERE (exists(SELECT FIRST 1 1 +WHERE (exists(SELECT 1 FROM Song_tag Mt_Ms - WHERE (Mt_Ms.Song_id = a.Id) AND (exists(SELECT FIRST 1 1 + WHERE (Mt_Ms.Song_id = a.Id) AND (exists(SELECT 1 FROM Tag t WHERE (t.Name = '国语') AND (t.Id = Mt_Ms.Tag_id)))))", t2); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/ConvertTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/ConvertTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/ConvertTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/ConvertTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/DateTimeTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/DateTimeTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/DateTimeTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/DateTimeTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/MathTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/MathTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/MathTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/MathTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/OtherTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/OtherTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/OtherTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/StringTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/StringTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/StringTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/StringTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/TimeSpanTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/TimeSpanTest.cs similarity index 100% rename from FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/FirebirdExpression/TimeSpanTest.cs rename to FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/GBaseExpression/TimeSpanTest.cs diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/g.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/g.cs index 8fcee4a4..6328e8f3 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/g.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/g.cs @@ -35,4 +35,6 @@ public class g }); public static IFreeSql gbase => gbaseLazy.Value; + //su - gbasedbt + //oninit -vy } diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/804.cs b/FreeSql.Tests/FreeSql.Tests/Issues/804.cs index 3bab23f5..cf387d81 100644 --- a/FreeSql.Tests/FreeSql.Tests/Issues/804.cs +++ b/FreeSql.Tests/FreeSql.Tests/Issues/804.cs @@ -106,7 +106,7 @@ WHERE (strftime('%Y',a."CreateTime") = 2021) var d1 = fsql.Select().Where(r => r.CreateTime.Month == month).ToList(); var d2 = fsql.Select().Where(r => r.CreateTime.Year == year).ToList(); - var d5 = fsql.Select().Where(r => r.CreateTime.Year == 2021).ToList(); + var d5 = fsql.Select().Where(r => r.CreateTime.Year == 2022).ToList(); Assert.Single(dmonth1); Assert.Single(d1); diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs index a1db0c8d..19335b53 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs @@ -33,7 +33,7 @@ namespace FreeSql.Tests { is_lock = test.ratio < 1 //这里生成的SQL语句有问题 ratio = 0.9 或 1.9 或 2.1 等等都是生成的是1 }).Where(m => test.ratio < 1).ToSql(); - Assert.Equal(@"UPDATE TestDto SET is_lock = 2.1 < 1 + Assert.Equal(@"UPDATE `TestDto` SET `is_lock` = 2.1 < 1 WHERE (2.1 < 1)", sql); } diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 3b06701e..be8688b0 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -406,11 +406,6 @@ 按时分表:[Table(Name = "log_{yyyyMMddHH}", AsTable = "create_time=2022-5-1(6 hour)")] - - - 所有分表名 - - 可以匹配以下条件(支持参数化): diff --git a/FreeSql/Internal/CommonProvider/InsertProvider.cs b/FreeSql/Internal/CommonProvider/InsertProvider.cs index de45338f..e12b00d6 100644 --- a/FreeSql/Internal/CommonProvider/InsertProvider.cs +++ b/FreeSql/Internal/CommonProvider/InsertProvider.cs @@ -584,7 +584,7 @@ namespace FreeSql.Internal.CommonProvider public string ToSqlValuesOrSelectUnionAll(bool isValues = true) => ToSqlValuesOrSelectUnionAllExtension103(isValues, null, null, false); public string ToSqlValuesOrSelectUnionAllExtension101(bool isValues, Action onrow) => ToSqlValuesOrSelectUnionAllExtension103(isValues, null, onrow, false); - public string ToSqlValuesOrSelectUnionAllExtension102(bool isValues, Action onrowPre, Action onrow) => ToSqlValuesOrSelectUnionAllExtension103(isValues, null, onrow, false); + public string ToSqlValuesOrSelectUnionAllExtension102(bool isValues, Action onrowPre, Action onrow) => ToSqlValuesOrSelectUnionAllExtension103(isValues, onrowPre, onrow, false); string ToSqlValuesOrSelectUnionAllExtension103(bool isValues, Action onrowPre, Action onrow, bool isAsTableSplited) { if (_source == null || _source.Any() == false) return null; diff --git a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs index 6d81e48b..ecd48033 100644 --- a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs +++ b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs @@ -21,7 +21,9 @@ namespace FreeSql.ClickHouse { if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}"; var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type; - DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName, DbType = dbtype ?? default, Value = value };//QuoteParamterName(parameterName) + DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName) + if (dbtype != null) ret.DbType = dbtype.Value; + ret.Value = value; if (col != null) { var dbtype2 = (DbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize }); diff --git a/Providers/FreeSql.Provider.Dameng/DamengUtils.cs b/Providers/FreeSql.Provider.Dameng/DamengUtils.cs index 5dc1bd37..cfee3da5 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengUtils.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengUtils.cs @@ -40,7 +40,9 @@ namespace FreeSql.Dameng } break; } - var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName), DmSqlType = dbtype ?? default, Value = value }; + var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName) }; + if (dbtype != null) ret.DmSqlType = dbtype.Value; + ret.Value = value; _params?.Add(ret); return ret; } diff --git a/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs b/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs index bb65b3e0..2655e2f0 100644 --- a/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs +++ b/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs @@ -35,7 +35,7 @@ namespace FreeSql.Firebird break; } } - ret.FbDbType = dbtype ?? default; + if (dbtype != null) ret.FbDbType = dbtype.Value; _params?.Add(ret); return ret; } diff --git a/Providers/FreeSql.Provider.GBase/GBaseUtils.cs b/Providers/FreeSql.Provider.GBase/GBaseUtils.cs index 79f1e9d7..b2c243ca 100644 --- a/Providers/FreeSql.Provider.GBase/GBaseUtils.cs +++ b/Providers/FreeSql.Provider.GBase/GBaseUtils.cs @@ -35,7 +35,7 @@ namespace FreeSql.GBase break; } } - ret.OdbcType = dbtype ?? default; + if (dbtype != null) ret.OdbcType = dbtype.Value; _params?.Add(ret); return ret; } diff --git a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs index ed0b68e9..7ca8d271 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs @@ -46,7 +46,10 @@ namespace FreeSql.MySql if (value != null) ret.Value = (value as MygisGeometry).AsText(); } else - ret.MySqlDbType = dbtype ?? default; + { + if (dbtype != null) + ret.MySqlDbType = dbtype.Value; + } _params?.Add(ret); return ret; } diff --git a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs index a242f2d7..7a7b8084 100644 --- a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs +++ b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs @@ -44,7 +44,8 @@ namespace FreeSql.MySql } else { - ret.MySqlDbType = dbtype ?? default; + if (dbtype != null) + ret.MySqlDbType = dbtype.Value; if (ret.MySqlDbType == MySqlDbType.Enum && value != null) ret.Value = EnumValueToMySql(value); } diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs index a1c95f01..9ce96dbb 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs @@ -36,7 +36,9 @@ namespace FreeSql.Odbc.Dameng value = string.Concat(value); break; } - var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value }; + var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) }; + if (dbtype != null) ret.OdbcType = dbtype.Value; + ret.Value = value; _params?.Add(ret); return ret; } @@ -62,7 +64,9 @@ namespace FreeSql.Odbc.Dameng value = string.Concat(value); break; } - var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value }; + var ret = new OdbcParameter { ParameterName = $":{name}" }; + if (dbtype != null) ret.OdbcType = dbtype.Value; + ret.Value = value; return ret; }); diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs index e7c00f5f..d2104316 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs @@ -18,9 +18,10 @@ namespace FreeSql.Odbc.Default { if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}"; if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1); - var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value }; + var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) }; var tp = _orm.CodeFirst.GetDbInfo(type)?.type; if (tp != null) ret.OdbcType = (OdbcType)tp.Value; + ret.Value = value; _params?.Add(ret); return ret; } @@ -29,9 +30,10 @@ namespace FreeSql.Odbc.Default Utils.GetDbParamtersByObject(sql, obj, null, (name, type, value) => { if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1); - var ret = new OdbcParameter { ParameterName = $"@{name}", Value = value }; + var ret = new OdbcParameter { ParameterName = $"@{name}" }; var tp = _orm.CodeFirst.GetDbInfo(type)?.type; if (tp != null) ret.OdbcType = (OdbcType)tp.Value; + ret.Value = value; return ret; }); diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs index 95d80ad4..0ec715b9 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs @@ -18,10 +18,10 @@ namespace FreeSql.Odbc.MySql public override DbParameter AppendParamter(List _params, string parameterName, ColumnInfo col, Type type, object value) { if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}"; - var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value }; + var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) }; var tp = _orm.CodeFirst.GetDbInfo(type)?.type; - if (tp != null) - ret.OdbcType = (OdbcType)tp.Value; + if (tp != null) ret.OdbcType = (OdbcType)tp.Value; + ret.Value = value; _params?.Add(ret); return ret; } @@ -29,10 +29,10 @@ namespace FreeSql.Odbc.MySql public override DbParameter[] GetDbParamtersByObject(string sql, object obj) => Utils.GetDbParamtersByObject(sql, obj, null, (name, type, value) => { - var ret = new OdbcParameter { ParameterName = $"?{name}", Value = value }; + var ret = new OdbcParameter { ParameterName = $"?{name}" }; var tp = _orm.CodeFirst.GetDbInfo(type)?.type; - if (tp != null) - ret.OdbcType = (OdbcType)tp.Value; + if (tp != null) ret.OdbcType = (OdbcType)tp.Value; + ret.Value = value; return ret; }); diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs index 7ee2273d..d8859e15 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs @@ -36,7 +36,9 @@ namespace FreeSql.Odbc.Oracle value = string.Concat(value); break; } - var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value }; + var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) }; + if (dbtype != null) ret.OdbcType = dbtype.Value; + ret.Value = value; _params?.Add(ret); return ret; } @@ -62,7 +64,9 @@ namespace FreeSql.Odbc.Oracle value = string.Concat(value); break; } - var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value }; + var ret = new OdbcParameter { ParameterName = $":{name}" }; + if (dbtype != null) ret.OdbcType = dbtype.Value; + ret.Value = value; return ret; }); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerDelete.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerDelete.cs index ab0bc595..e0f184e5 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerDelete.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerDelete.cs @@ -41,9 +41,9 @@ namespace FreeSql.Odbc.SqlServer var sql = sb.ToString(); var validx = sql.IndexOf(" WHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); @@ -98,9 +98,9 @@ namespace FreeSql.Odbc.SqlServer var sql = sb.ToString(); var validx = sql.IndexOf(" WHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs index 546f118d..d1a74591 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs @@ -45,11 +45,11 @@ namespace FreeSql.Odbc.SqlServer } } var sql = sb.ToString(); - var validx = sql.IndexOf(" WHERE "); + var validx = sql.IndexOf(" \r\nWHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); @@ -138,11 +138,11 @@ namespace FreeSql.Odbc.SqlServer } } var sql = sb.ToString(); - var validx = sql.IndexOf(" WHERE "); + var validx = sql.IndexOf(" \r\nWHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); diff --git a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs index 728a6740..3e286782 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs @@ -25,8 +25,9 @@ namespace FreeSql.Oracle else value = (bool)value == true ? 1 : 0; dbtype = OracleDbType.Int16; } - var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), Value = value }; + var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName) }; if (dbtype != null) ret.OracleDbType = dbtype.Value; + ret.Value = value; if (col != null) { var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType?.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), DbTypeText = col.DbTypeText }); @@ -63,8 +64,9 @@ namespace FreeSql.Oracle else value = (bool)value == true ? 1 : 0; dbtype = OracleDbType.Int16; } - var ret = new OracleParameter { ParameterName = $":{name}", Value = value }; + var ret = new OracleParameter { ParameterName = $":{name}" }; if (dbtype != null) ret.OracleDbType = dbtype.Value; + ret.Value = value; return ret; }); diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerDelete.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerDelete.cs index ff20a9a3..05ae3498 100644 --- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerDelete.cs +++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerDelete.cs @@ -41,9 +41,9 @@ namespace FreeSql.SqlServer.Curd var sql = sb.ToString(); var validx = sql.IndexOf(" WHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); @@ -98,9 +98,9 @@ namespace FreeSql.SqlServer.Curd var sql = sb.ToString(); var validx = sql.IndexOf(" WHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs index acd6331e..4d6fb211 100644 --- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs +++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs @@ -46,11 +46,11 @@ namespace FreeSql.SqlServer.Curd } } var sql = sb.ToString(); - var validx = sql.IndexOf(" WHERE "); + var validx = sql.IndexOf(" \r\nWHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); @@ -139,11 +139,11 @@ namespace FreeSql.SqlServer.Curd } } var sql = sb.ToString(); - var validx = sql.IndexOf(" WHERE "); + var validx = sql.IndexOf(" \r\nWHERE "); if (validx == -1) throw new ArgumentException("找不到 WHERE "); - sb.Clear().Append(sql.Substring(0, validx)) + sql = sb.Clear().Append(sql.Substring(0, validx)) .Append(sbret) - .Append(sql.Substring(validx)); + .Append(sql.Substring(validx)).ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs b/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs index 3cd4c2d9..4e036627 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs @@ -43,7 +43,7 @@ namespace FreeSql.Sqlite var ret = new SQLiteParameter(); #endif ret.ParameterName = QuoteParamterName(parameterName); - ret.DbType = dbtype ?? default; + if (dbtype != null) ret.DbType = dbtype.Value; ret.Value = value; _params?.Add(ret); return ret;