diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 8fffff4c..2b8be9af 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -429,6 +429,15 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + + var sqlt0a1 = fsql.InsertOrUpdate<抖店实时销售金额表>() + .SetSource(new 抖店实时销售金额表 + { + ID = 1, + 品牌名称 = "NIKE", + }) + .ToSql(); + fsql.UseMessagePackMap(); fsql.Delete().Where("1=1").ExecuteAffrows(); @@ -1605,4 +1614,42 @@ namespace base_entity } } + public class 抖店实时销售金额表 + { + /// + /// ID + /// + [Column(Name = "ID", IsPrimary = true)] + public int ID { get; set; } + + /// + /// 店铺名称 + /// + [Column(Name = "店铺名称")] + public string 店铺名称 { get; set; } + + /// + /// 日期 + /// + [Column(Name = "日期")] + public DateTime 日期 { get; set; } + + /// + /// 品牌名称 + /// + [Column(Name = "品牌名称")] + public string 品牌名称 { get; set; } + + /// + /// 成交金额 + /// + [Column(Name = "成交金额")] + public decimal? 成交金额 { get; set; } + + /// + /// 更新时间 + /// + [Column(Name = "更新时间", CanInsert = false, CanUpdate = true, ServerTime = DateTimeKind.Local)] + public DateTime 更新时间 { get; set; } + } } diff --git a/Examples/base_entity/base_entity.xml b/Examples/base_entity/base_entity.xml index c340101f..aa997a23 100644 --- a/Examples/base_entity/base_entity.xml +++ b/Examples/base_entity/base_entity.xml @@ -79,6 +79,36 @@ 软删除 + + + ID + + + + + 店铺名称 + + + + + 日期 + + + + + 品牌名称 + + + + + 成交金额 + + + + + 更新时间 + + 角色表 diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 537315e2..26522f10 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -800,5 +800,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlOnDuplicateKeyUpdate.cs b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlOnDuplicateKeyUpdate.cs index e67f1c85..3af6c7e1 100644 --- a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlOnDuplicateKeyUpdate.cs +++ b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlOnDuplicateKeyUpdate.cs @@ -92,9 +92,16 @@ namespace FreeSql.Custom.MySql } else if (_mysqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_mysqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLOnConflictDoUpdate.cs b/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLOnConflictDoUpdate.cs index b9c9c4cd..b7717283 100644 --- a/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLOnConflictDoUpdate.cs +++ b/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLOnConflictDoUpdate.cs @@ -132,9 +132,16 @@ namespace FreeSql.Custom.PostgreSQL } else if (_pgsqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_pgsqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESOnConflictDoUpdate.cs b/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESOnConflictDoUpdate.cs index 220b9715..91036fb5 100644 --- a/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESOnConflictDoUpdate.cs +++ b/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESOnConflictDoUpdate.cs @@ -132,9 +132,16 @@ namespace FreeSql.KingbaseES } else if (_insert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _update.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _update.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_insert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _update.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _update.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.MySql/Curd/OnDuplicateKeyUpdate.cs b/Providers/FreeSql.Provider.MySql/Curd/OnDuplicateKeyUpdate.cs index ece3c512..5cdccc17 100644 --- a/Providers/FreeSql.Provider.MySql/Curd/OnDuplicateKeyUpdate.cs +++ b/Providers/FreeSql.Provider.MySql/Curd/OnDuplicateKeyUpdate.cs @@ -92,9 +92,16 @@ namespace FreeSql.MySql.Curd } else if (_mysqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_mysqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/Curd/OdbcKingbaseESOnConflictDoUpdate.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/Curd/OdbcKingbaseESOnConflictDoUpdate.cs index dd6f5866..e061da85 100644 --- a/Providers/FreeSql.Provider.Odbc/KingbaseES/Curd/OdbcKingbaseESOnConflictDoUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/Curd/OdbcKingbaseESOnConflictDoUpdate.cs @@ -132,9 +132,16 @@ namespace FreeSql.Odbc.KingbaseES } else if (_pgsqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_pgsqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlOnDuplicateKeyUpdate.cs b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlOnDuplicateKeyUpdate.cs index 4f450158..79bec80f 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlOnDuplicateKeyUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlOnDuplicateKeyUpdate.cs @@ -92,9 +92,16 @@ namespace FreeSql.Odbc.MySql } else if (_mysqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_mysqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _mysqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _mysqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLOnConflictDoUpdate.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLOnConflictDoUpdate.cs index 0e9b42e6..474fd73e 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLOnConflictDoUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLOnConflictDoUpdate.cs @@ -132,9 +132,16 @@ namespace FreeSql.Odbc.PostgreSQL } else if (_pgsqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_pgsqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else { diff --git a/Providers/FreeSql.Provider.PostgreSQL/Curd/OnConflictDoUpdate.cs b/Providers/FreeSql.Provider.PostgreSQL/Curd/OnConflictDoUpdate.cs index a0b99260..7727ea78 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/Curd/OnConflictDoUpdate.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/Curd/OnConflictDoUpdate.cs @@ -132,9 +132,16 @@ namespace FreeSql.PostgreSQL.Curd } else if (_pgsqlInsert.InternalIgnore.ContainsKey(col.Attribute.Name)) { - var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); - sb.Append(caseWhen); - if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + if (string.IsNullOrEmpty(col.DbUpdateValue) == false) + { + sb.Append(_pgsqlInsert.InternalCommonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(col.DbUpdateValue); + } + else + { + var caseWhen = _pgsqlUpdate.InternalWhereCaseSource(col.CsName, sqlval => sqlval).Trim(); + sb.Append(caseWhen); + if (caseWhen.EndsWith(" END")) _pgsqlUpdate.InternalToSqlCaseWhenEnd(sb, col); + } } else {