diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
index bf9e6d4d..a21af7db 100644
--- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
+++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
@@ -104,6 +104,41 @@
班期信息
+
+
+ 库位
+
+
+
+
+ 工厂
+
+
+
+
+ 物料号
+
+
+
+
+ 条码号
+
+
+
+
+ 创建时间
+
+
+
+
+ 创建人
+
+
+
+
+ 创建人名称
+
+
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/518.cs b/FreeSql.Tests/FreeSql.Tests/Issues/518.cs
new file mode 100644
index 00000000..a69536ae
--- /dev/null
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/518.cs
@@ -0,0 +1,59 @@
+using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Threading;
+using Xunit;
+
+namespace FreeSql.Tests.Issues
+{
+ public class _518
+ {
+ [Fact]
+ public void SelectTest()
+ {
+ IFreeSql free = g.sqlserver;
+
+ //创建测试数据
+ using (var db = free.CreateDbContext())
+ {
+ db.Set().Remove(t => true); //清空旧数据
+ db.SaveChanges();
+
+ //插入三条测试数据
+ db.Add(new TestEntity518() { ID = "A", Name = "张三", Age = 18 });
+ db.Add(new TestEntity518() { ID = "B", Name = "李四", Age = 19 });
+ db.Add(new TestEntity518() { ID = "C", Name = "王五", Age = 20 });
+ db.SaveChanges();
+ }
+
+ //开始测试
+ using (var db = free.CreateDbContext())
+ {
+ var entities = db.Set().Where(t => true).ToDictionary(t => t.ID);
+
+ entities["A"].Age = 25;
+ db.Update(entities["A"]);
+
+ entities["B"].Age = 26;
+ db.Update(entities["B"]);
+
+ entities["C"].Age = 27;
+ //entities["C"].Name = "王五5"; //注释掉这一行就不会报错
+ db.Update(entities["C"]);
+
+ db.Add(new TestEntity518() { ID = "D", Name = "马六", Age = 30 });
+
+ db.SaveChanges();
+ }
+ }
+ class TestEntity518
+ {
+ public string ID { get; set; }
+ public string Name { get; set; }
+ public int Age { get; set; }
+ }
+ }
+}
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/519.cs b/FreeSql.Tests/FreeSql.Tests/Issues/519.cs
new file mode 100644
index 00000000..bcaf78ce
--- /dev/null
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/519.cs
@@ -0,0 +1,72 @@
+using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Threading;
+using Xunit;
+
+namespace FreeSql.Tests.Issues
+{
+ public class _519
+ {
+ [Fact]
+ public void SelectTest()
+ {
+ IFreeSql fsql = g.sqlserver;
+
+ fsql.Delete().Where("1=1").ExecuteAffrows();
+ fsql.Insert(new[]
+ {
+ new ST_Stock519 { StoreHouse = "001", Works = "101", MaterialCode = "201", BatchCode = "301", CreatedTime = DateTime.Now },
+ new ST_Stock519 { StoreHouse = "002", Works = "102", MaterialCode = "202", BatchCode = "302", CreatedTime = DateTime.Now },
+ new ST_Stock519 { StoreHouse = "003", Works = "103", MaterialCode = "203", BatchCode = "303", CreatedTime = DateTime.Now }
+ }).ExecuteAffrows();
+
+ var list = fsql.Select().ToList();
+ var sql1 = fsql.Insert(list).NoneParameter().ToSql();
+ var sql2 = fsql.Update().SetSource(list).NoneParameter().ToSql();
+ var sql3 = fsql.InsertOrUpdate().SetSource(list).ToSql();
+ }
+ class ST_Stock519
+ {
+ ///
+ /// 库位
+ ///
+ [Column(IsPrimary = true, DbType = "varchar(50)")]
+ public string StoreHouse { get; set; } = string.Empty;
+
+ ///
+ /// 工厂
+ ///
+ [Column(IsPrimary = true, DbType = "varchar(50)")]
+ public string Works { get; set; } = string.Empty;
+ ///
+ /// 物料号
+ ///
+ [Column(IsPrimary = true, DbType = "varchar(50)")]
+ public string MaterialCode { get; set; } = string.Empty;
+ ///
+ /// 条码号
+ ///
+ [Column(IsPrimary = true, DbType = "varchar(50)")]
+ public string BatchCode { get; set; } = string.Empty;
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? CreatedTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public string CreatorID { get; set; } = string.Empty;
+
+ ///
+ /// 创建人名称
+ ///
+ public string CreatorName { get; set; } = string.Empty;
+ }
+ }
+}
diff --git a/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs b/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs
index ac621b0d..d2ed7a35 100644
--- a/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs
+++ b/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs
@@ -166,7 +166,7 @@ namespace FreeSql.Internal.CommonProvider
else
{
object val = col.GetDbValue(d);
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col, col.Attribute.MapType, val));
}
if (didx == 0) sb.Append(" as ").Append(col.Attribute.Name);
++colidx2;
diff --git a/FreeSql/Internal/CommonProvider/InsertProvider.cs b/FreeSql/Internal/CommonProvider/InsertProvider.cs
index 3ede179a..cb14f9cb 100644
--- a/FreeSql/Internal/CommonProvider/InsertProvider.cs
+++ b/FreeSql/Internal/CommonProvider/InsertProvider.cs
@@ -571,7 +571,7 @@ namespace FreeSql.Internal.CommonProvider
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs
index 40720ec1..5d579daf 100644
--- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs
+++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs
@@ -427,7 +427,7 @@ namespace FreeSql.Internal.CommonProvider
_set.Append(", ").Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
if (_noneParameter)
{
- _set.Append(_commonUtils.GetNoneParamaterSqlValue(_params, "u", col.Attribute.MapType, val));
+ _set.Append(_commonUtils.GetNoneParamaterSqlValue(_params, "u", col, col.Attribute.MapType, val));
}
else
{
@@ -588,7 +588,7 @@ namespace FreeSql.Internal.CommonProvider
var sb = new StringBuilder();
sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
- sb.Append(thenValue(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col.Attribute.MapType, col.GetDbValue(_source.First()))));
+ sb.Append(thenValue(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col, col.Attribute.MapType, col.GetDbValue(_source.First()))));
return sb.ToString();
@@ -612,7 +612,7 @@ namespace FreeSql.Internal.CommonProvider
ToSqlWhen(cwsb, _table.Primarys, d);
cwsb.Append(" THEN ");
var val = col.GetDbValue(d);
- cwsb.Append(thenValue(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col.Attribute.MapType, val)));
+ cwsb.Append(thenValue(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col, col.Attribute.MapType, val)));
if (val == null || val == DBNull.Value) nulls++;
}
cwsb.Append(" END");
@@ -685,7 +685,7 @@ namespace FreeSql.Internal.CommonProvider
{
var val = col.GetDbValue(_source.First());
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
@@ -730,7 +730,7 @@ namespace FreeSql.Internal.CommonProvider
cwsb.Append(" THEN ");
var val = col.GetDbValue(d);
if (_noneParameter)
- cwsb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col.Attribute.MapType, val));
+ cwsb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "u", col, col.Attribute.MapType, val));
else
{
cwsb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
diff --git a/FreeSql/Internal/CommonUtils.cs b/FreeSql/Internal/CommonUtils.cs
index 0bcd1bbd..37963385 100644
--- a/FreeSql/Internal/CommonUtils.cs
+++ b/FreeSql/Internal/CommonUtils.cs
@@ -23,7 +23,7 @@ namespace FreeSql.Internal
public abstract class CommonUtils
{
- public abstract string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value);
+ public abstract string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value);
public abstract DbParameter AppendParamter(List _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);
@@ -267,7 +267,7 @@ namespace FreeSql.Internal
var pk1 = primarys.FirstOrDefault();
if (primarys.Length == 1 && (type == pk1.CsType || type.IsNumberType() && pk1.CsType.IsNumberType()))
{
- return $"{aliasAndDot}{this.QuoteSqlName(pk1.Attribute.Name)} = {this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, dywhere))}";
+ return $"{aliasAndDot}{this.QuoteSqlName(pk1.Attribute.Name)} = {GetNoneParamaterSqlValue(null, null, pk1, pk1.Attribute.MapType, Utils.GetDataReaderValue(pk1.Attribute.MapType, dywhere))}";
}
else if (primarys.Length > 0 && (type == table.Type || type.BaseType == table.Type))
{
@@ -276,15 +276,15 @@ namespace FreeSql.Internal
foreach (var pk in primarys)
{
if (pkidx > 0) sb.Append(" AND ");
- sb.Append(aliasAndDot).Append(this.QuoteSqlName(pk.Attribute.Name));
- sb.Append(this.FormatSql(" = {0}", pk.GetDbValue(dywhere)));
+ sb.Append(aliasAndDot).Append(this.QuoteSqlName(pk.Attribute.Name)).Append(" = ");
+ sb.Append(GetNoneParamaterSqlValue(null, null, pk, pk.Attribute.MapType, pk.GetDbValue(dywhere)));
++pkidx;
}
return sb.ToString();
}
else if (primarys.Length == 1 && type == typeof(string))
{
- return $"{aliasAndDot}{this.QuoteSqlName(pk1.Attribute.Name)} = {this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, dywhere))}";
+ return $"{aliasAndDot}{this.QuoteSqlName(pk1.Attribute.Name)} = {GetNoneParamaterSqlValue(null, null, pk1, pk1.Attribute.MapType, Utils.GetDataReaderValue(pk1.Attribute.MapType, dywhere))}";
}
else if (primarys.Length == 1 && dywhere is IEnumerable)
{
@@ -303,8 +303,8 @@ namespace FreeSql.Internal
var itype = i.GetType();
isEntityType = (itype == table.Type || itype.BaseType == table.Type);
}
- if (isEntityType) sb.Append(this.FormatSql("{0}", primarys[0].GetDbValue(i)));
- else sb.Append(this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, i)));
+ if (isEntityType) sb.Append(GetNoneParamaterSqlValue(null, null, primarys[0], primarys[0].Attribute.MapType, primarys[0].GetDbValue(i)));
+ else sb.Append(GetNoneParamaterSqlValue(null, null, pk1, pk1.Attribute.MapType, Utils.GetDataReaderValue(pk1.Attribute.MapType, i)));
++ieidx;
}
if (isAny == false) return "";
@@ -338,8 +338,8 @@ namespace FreeSql.Internal
if (trycol == null) continue;
if (psidx > 0) sb.Append(" AND ");
- sb.Append(aliasAndDot).Append(this.QuoteSqlName(trycol.Attribute.Name));
- sb.Append(this.FormatSql(" = {0}", Utils.GetDataReaderValue(trycol.Attribute.MapType, p.GetValue(dywhere, null))));
+ sb.Append(aliasAndDot).Append(this.QuoteSqlName(trycol.Attribute.Name)).Append(" = ");
+ sb.Append(GetNoneParamaterSqlValue(null, null, trycol, trycol.Attribute.MapType, Utils.GetDataReaderValue(trycol.Attribute.MapType, p.GetValue(dywhere, null))));
++psidx;
}
if (psidx == 0) return "";
@@ -360,8 +360,8 @@ namespace FreeSql.Internal
sbin.Append(aliasAndDot).Append(this.QuoteSqlName(pk1.Attribute.Name));
var indt = its.Select(a => pk1.GetDbValue(a)).Where(a => a != null).ToArray();
if (indt.Any() == false) return null;
- if (indt.Length == 1) sbin.Append(" = ").Append(this.FormatSql("{0}", indt.First()));
- else sbin.Append(" IN (").Append(string.Join(",", indt.Select(a => this.FormatSql("{0}", a)))).Append(")");
+ if (indt.Length == 1) sbin.Append(" = ").Append(GetNoneParamaterSqlValue(null, null, pk1, pk1.Attribute.MapType, indt.First()));
+ else sbin.Append(" IN (").Append(string.Join(",", indt.Select(a => GetNoneParamaterSqlValue(null, null, pk1, pk1.Attribute.MapType, a)))).Append(")");
return sbin.ToString();
}
var dicpk = its.Length > 5 ? new Dictionary() : null;
@@ -371,7 +371,7 @@ namespace FreeSql.Internal
{
var filter = "";
foreach (var pk in table.Primarys)
- filter += $" AND {aliasAndDot}{this.QuoteSqlName(pk.Attribute.Name)} = {this.FormatSql("{0}", pk.GetDbValue(item))}";
+ filter += $" AND {aliasAndDot}{this.QuoteSqlName(pk.Attribute.Name)} = {GetNoneParamaterSqlValue(null, null, pk, pk.Attribute.MapType, pk.GetDbValue(item))}";
if (string.IsNullOrEmpty(filter)) continue;
if (sb != null)
{
diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs
index 0d286190..0786b1ec 100644
--- a/FreeSql/Internal/UtilsExpressionTree.cs
+++ b/FreeSql/Internal/UtilsExpressionTree.cs
@@ -187,7 +187,7 @@ namespace FreeSql.Internal
}
try
{
- col.DbDefaultValue = common.GetNoneParamaterSqlValue(new List(), "init", colattr.MapType, defaultValue);
+ col.DbDefaultValue = common.GetNoneParamaterSqlValue(new List(), "init", col, colattr.MapType, defaultValue);
}
catch
{
diff --git a/Providers/FreeSql.Provider.Dameng/Curd/DamengInsert.cs b/Providers/FreeSql.Provider.Dameng/Curd/DamengInsert.cs
index c1e3047c..e0e0173c 100644
--- a/Providers/FreeSql.Provider.Dameng/Curd/DamengInsert.cs
+++ b/Providers/FreeSql.Provider.Dameng/Curd/DamengInsert.cs
@@ -69,7 +69,7 @@ namespace FreeSql.Dameng.Curd
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
diff --git a/Providers/FreeSql.Provider.Dameng/DamengUtils.cs b/Providers/FreeSql.Provider.Dameng/DamengUtils.cs
index b9500106..d8faa6f5 100644
--- a/Providers/FreeSql.Provider.Dameng/DamengUtils.cs
+++ b/Providers/FreeSql.Provider.Dameng/DamengUtils.cs
@@ -93,7 +93,7 @@ namespace FreeSql.Dameng
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs b/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs
index 98a9cb76..a20c5fbc 100644
--- a/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs
+++ b/Providers/FreeSql.Provider.Firebird/FirebirdUtils.cs
@@ -82,7 +82,7 @@ namespace FreeSql.Firebird
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESUtils.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESUtils.cs
index 91bc9f92..f0667e70 100644
--- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESUtils.cs
+++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESUtils.cs
@@ -124,7 +124,7 @@ namespace FreeSql.KingbaseES
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -146,7 +146,7 @@ namespace FreeSql.KingbaseES
{
var item = valueArr.GetValue(a);
if (a > 0) sb.Append(",");
- sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, eleType, item));
+ sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, col, eleType, item));
}
sb.Append("]");
var dbinfo = _orm.CodeFirst.GetDbInfo(type);
diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
index ed8fc51b..9898dcac 100644
--- a/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
+++ b/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
@@ -82,7 +82,7 @@ namespace FreeSql.MsAccess
public override string FieldAsAlias(string alias) => $" as {alias}";
public override string IIF(string test, string ifTrue, string ifElse) => $"iif({test}, {ifTrue}, {ifElse})";
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
index 5a4ced4d..6d2555bc 100644
--- a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
+++ b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
@@ -126,7 +126,7 @@ namespace FreeSql.MySql
return columnName;
}
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
index 221855b1..c8cdabb2 100644
--- a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
+++ b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
@@ -146,7 +146,7 @@ namespace FreeSql.MySql
return columnName;
}
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengInsert.cs b/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengInsert.cs
index ee2ca1a0..ac099657 100644
--- a/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengInsert.cs
+++ b/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengInsert.cs
@@ -69,7 +69,7 @@ namespace FreeSql.Odbc.Dameng
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
index a9edc60d..edaa12e1 100644
--- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
@@ -99,7 +99,7 @@ namespace FreeSql.Odbc.Dameng
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs
index 64fd5d83..d24daf3b 100644
--- a/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcUtils.cs
@@ -69,7 +69,7 @@ namespace FreeSql.Odbc.Default
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => Adapter.FieldSql(type, columnName);
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESUtils.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESUtils.cs
index b1a3a680..6b661ab8 100644
--- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESUtils.cs
@@ -123,7 +123,7 @@ namespace FreeSql.Odbc.KingbaseES
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -145,7 +145,7 @@ namespace FreeSql.Odbc.KingbaseES
{
var item = valueArr.GetValue(a);
if (a > 0) sb.Append(",");
- sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, eleType, item));
+ sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, col, eleType, item));
}
sb.Append("]");
var dbinfo = _orm.CodeFirst.GetDbInfo(type);
diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
index dc65db27..87a54520 100644
--- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
@@ -93,7 +93,7 @@ namespace FreeSql.Odbc.MySql
return columnName;
}
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleInsert.cs b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleInsert.cs
index d2903b2d..f687a17d 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleInsert.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleInsert.cs
@@ -69,7 +69,7 @@ namespace FreeSql.Odbc.Oracle
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
index 1279be50..9c4b68b0 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
@@ -99,7 +99,7 @@ namespace FreeSql.Odbc.Oracle
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
index c65c1788..68a21b0f 100644
--- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
@@ -123,7 +123,7 @@ namespace FreeSql.Odbc.PostgreSQL
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -145,7 +145,7 @@ namespace FreeSql.Odbc.PostgreSQL
{
var item = valueArr.GetValue(a);
if (a > 0) sb.Append(",");
- sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, eleType, item));
+ sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, col, eleType, item));
}
sb.Append("]");
var dbinfo = _orm.CodeFirst.GetDbInfo(type);
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
index bb2fc858..666f01d0 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
@@ -1,4 +1,5 @@
using FreeSql.Internal;
+using FreeSql.Internal.CommonProvider;
using FreeSql.Internal.Model;
using System;
using System.Collections.Generic;
@@ -86,7 +87,7 @@ namespace FreeSql.Odbc.SqlServer
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -96,7 +97,7 @@ namespace FreeSql.Odbc.SqlServer
var ts = (TimeSpan)value;
value = $"{ts.Hours}:{ts.Minutes}:{ts.Seconds}.{ts.Milliseconds}";
}
- return FormatSql("{0}", value, 1);
+ return string.Format(CultureInfo.InvariantCulture, "{0}", (_orm.Ado as AdoProvider).AddslashesProcessParam(value, type, col));
}
}
}
diff --git a/Providers/FreeSql.Provider.Oracle/Curd/OracleInsert.cs b/Providers/FreeSql.Provider.Oracle/Curd/OracleInsert.cs
index e7f68355..ce124df9 100644
--- a/Providers/FreeSql.Provider.Oracle/Curd/OracleInsert.cs
+++ b/Providers/FreeSql.Provider.Oracle/Curd/OracleInsert.cs
@@ -78,7 +78,7 @@ namespace FreeSql.Oracle.Curd
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
@@ -143,7 +143,7 @@ namespace FreeSql.Oracle.Curd
object val = col.GetDbValue(d);
if (val == null && col.Attribute.IsNullable == false) val = col.CsType == typeof(string) ? "" : Utils.GetDataReaderValue(col.CsType.NullableTypeOrThis(), null);//#384
if (_noneParameter)
- sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col.Attribute.MapType, val));
+ sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, _noneParameterFlag, col, col.Attribute.MapType, val));
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
diff --git a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
index 4538a0ff..9d66f317 100644
--- a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
+++ b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
@@ -98,7 +98,7 @@ namespace FreeSql.Oracle
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
index bf384eda..71c5f478 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
@@ -163,7 +163,7 @@ namespace FreeSql.PostgreSQL
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
static ConcurrentDictionary _dicIsAssignableFromPostgisGeometry = new ConcurrentDictionary();
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -199,7 +199,7 @@ namespace FreeSql.PostgreSQL
{
var item = valueArr.GetValue(a);
if (a > 0) sb.Append(",");
- sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, eleType, item));
+ sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, col, eleType, item));
}
sb.Append("]");
var dbinfo = _orm.CodeFirst.GetDbInfo(type);
diff --git a/Providers/FreeSql.Provider.ShenTong/ShenTongUtils.cs b/Providers/FreeSql.Provider.ShenTong/ShenTongUtils.cs
index b29ce343..a413ae16 100644
--- a/Providers/FreeSql.Provider.ShenTong/ShenTongUtils.cs
+++ b/Providers/FreeSql.Provider.ShenTong/ShenTongUtils.cs
@@ -137,7 +137,7 @@ namespace FreeSql.ShenTong
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -161,7 +161,7 @@ namespace FreeSql.ShenTong
{
var item = valueArr.GetValue(a);
if (a > 0) sb.Append(",");
- sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, eleType, item));
+ sb.Append(GetNoneParamaterSqlValue(specialParams, specialParamFlag, col, eleType, item));
}
sb.Append("]");
var dbinfo = _orm.CodeFirst.GetDbInfo(type);
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
index 88a36219..9295faec 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
@@ -1,4 +1,5 @@
using FreeSql.Internal;
+using FreeSql.Internal.CommonProvider;
using FreeSql.Internal.Model;
using System;
using System.Collections.Generic;
@@ -102,7 +103,7 @@ namespace FreeSql.SqlServer
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);
@@ -112,7 +113,7 @@ namespace FreeSql.SqlServer
var ts = (TimeSpan)value;
value = $"{ts.Hours}:{ts.Minutes}:{ts.Seconds}.{ts.Milliseconds}";
}
- return FormatSql("{0}", value, 1);
+ return string.Format(CultureInfo.InvariantCulture, "{0}", (_orm.Ado as AdoProvider).AddslashesProcessParam(value, type, col));
}
}
}
diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs b/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs
index 98ed34bd..ffdbb89c 100644
--- a/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs
+++ b/Providers/FreeSql.Provider.Sqlite/SqliteUtils.cs
@@ -98,7 +98,7 @@ namespace FreeSql.Sqlite
public override string QuoteWriteParamter(Type type, string paramterName) => paramterName;
public override string QuoteReadColumn(Type type, Type mapType, string columnName) => columnName;
- public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, Type type, object value)
+ public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value)
{
if (value == null) return "NULL";
if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value);