diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index d8a1c7d10..329b79a79 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -559,7 +559,7 @@ namespace base_entity //.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5") //.UseQuoteSqlName(false) - //.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") + .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") @@ -602,8 +602,8 @@ namespace base_entity var dict = new List>(); Dictionary d = new Dictionary(); - d.Add("id", 1); - d.Add("name", "name1"); + d.Add("id", 2); + d.Add("name", "name2"); dict.Add(d); var testx01 = fsql.InsertOrUpdateDict(dict).AsTable("table222zzz").WherePrimary("id").IfExistsDoNothing().ToSql(); fsql.InsertOrUpdateDict(dict).AsTable("table222zzz").WherePrimary("id").IfExistsDoNothing().ExecuteAffrows(); diff --git a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlInsertOrUpdate.cs b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlInsertOrUpdate.cs index 3b257fc10..bc6f4dc75 100644 --- a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlInsertOrUpdate.cs +++ b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlInsertOrUpdate.cs @@ -87,19 +87,22 @@ namespace FreeSql.Custom.MySql else { if (_tempPrimarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + MySql ", _table.CsName)); - sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => - { - sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); - if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) - sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); - else - sb.Append( - _orm.Select() - .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) - .DisableGlobalFilter() - .WhereDynamic(rowd) - .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); - }); + sql = insert.ToSqlValuesOrSelectUnionAll(); + if (sql?.StartsWith("INSERT INTO ") == true) + sql = $"INSERT IGNORE INTO {sql.Substring(12)}"; + //sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => + //{ + // sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); + // if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) + // sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); + // else + // sb.Append( + // _orm.Select() + // .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) + // .DisableGlobalFilter() + // .WhereDynamic(rowd) + // .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); + //}); } } if (string.IsNullOrEmpty(sql)) return null; diff --git a/Providers/FreeSql.Provider.MySql/Curd/MySqlInsertOrUpdate.cs b/Providers/FreeSql.Provider.MySql/Curd/MySqlInsertOrUpdate.cs index f1bb84de3..1a4a0c651 100644 --- a/Providers/FreeSql.Provider.MySql/Curd/MySqlInsertOrUpdate.cs +++ b/Providers/FreeSql.Provider.MySql/Curd/MySqlInsertOrUpdate.cs @@ -87,19 +87,22 @@ namespace FreeSql.MySql.Curd else { if (_tempPrimarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + MySql ", _table.CsName)); - sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => - { - sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); - if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) - sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); - else - sb.Append( - _orm.Select() - .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) - .DisableGlobalFilter() - .WhereDynamic(rowd) - .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); - }); + sql = insert.ToSqlValuesOrSelectUnionAll(); + if (sql?.StartsWith("INSERT INTO ") == true) + sql = $"INSERT IGNORE INTO {sql.Substring(12)}"; + //sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => + //{ + // sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); + // if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) + // sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); + // else + // sb.Append( + // _orm.Select() + // .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) + // .DisableGlobalFilter() + // .WhereDynamic(rowd) + // .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); + //}); } } if (string.IsNullOrEmpty(sql)) return null; diff --git a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlInsertOrUpdate.cs b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlInsertOrUpdate.cs index 2ebea13e1..f7bad9d63 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlInsertOrUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlInsertOrUpdate.cs @@ -87,19 +87,22 @@ namespace FreeSql.Odbc.MySql else { if (_tempPrimarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + MySql ", _table.CsName)); - sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => - { - sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); - if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) - sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); - else - sb.Append( - _orm.Select() - .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) - .DisableGlobalFilter() - .WhereDynamic(rowd) - .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); - }); + sql = insert.ToSqlValuesOrSelectUnionAll(); + if (sql?.StartsWith("INSERT INTO ") == true) + sql = $"INSERT IGNORE INTO {sql.Substring(12)}"; + //sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => + //{ + // sb.Append(" \r\n FROM dual WHERE NOT EXISTS("); + // if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) + // sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); + // else + // sb.Append( + // _orm.Select() + // .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) + // .DisableGlobalFilter() + // .WhereDynamic(rowd) + // .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); + //}); } } if (string.IsNullOrEmpty(sql)) return null; diff --git a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteInsertOrUpdate.cs b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteInsertOrUpdate.cs index 857dd3a6e..cb0824b40 100644 --- a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteInsertOrUpdate.cs +++ b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteInsertOrUpdate.cs @@ -59,23 +59,26 @@ namespace FreeSql.Sqlite.Curd if (_updateIgnore.Any()) throw new Exception(CoreStrings.S_InsertOrUpdate_Unable_UpdateColumns); sql = insert.ToSql(); if (sql?.StartsWith("INSERT INTO ") == true) - sql = $"REPLACE INTO {sql.Substring("INSERT INTO ".Length)}"; + sql = $"INSERT OR REPLACE INTO {sql.Substring(12)}"; } else { if (_tempPrimarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + Sqlite ", _table.CsName)); - sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => { - sb.Append(" \r\n WHERE NOT EXISTS("); - if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) - sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); - else - sb.Append( - _orm.Select() - .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) - .DisableGlobalFilter() - .WhereDynamic(rowd) - .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); - }); + sql = insert.ToSql(); + if (sql?.StartsWith("INSERT INTO ") == true) + sql = $"INSERT OR IGNORE INTO {sql.Substring(12)}"; + //sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) => { + // sb.Append(" \r\n WHERE NOT EXISTS("); + // if (typeof(T1) == typeof(Dictionary) && rowd is T1 dict) + // sb.Append($"SELECT 1 FROM {_commonUtils.QuoteSqlName(_tableRule(null))} WHERE {_commonUtils.WhereItems(_tempPrimarys, "", new T1[] { dict })})"); + // else + // sb.Append( + // _orm.Select() + // .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) + // .DisableGlobalFilter() + // .WhereDynamic(rowd) + // .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"); + //}); } } if (string.IsNullOrEmpty(sql)) return null;