- 增加 IInsert IgnoreInsertValueSql 方法临时忽略 InsertValueSql 设置;

This commit is contained in:
2881099 2023-03-30 15:15:26 +08:00
parent 598c9ee078
commit 486a05a3f7
12 changed files with 48 additions and 10 deletions

View File

@ -33,7 +33,7 @@ public class IdentityUser1
public int Id { get; set; } public int Id { get; set; }
[MaxLength(32)] [MaxLength(32)]
public string Username { get; set; } public string Username { get; set; }
[MaxLength(64)] [MaxLength(64), Column(InsertValueSql = "'defaultname'")]
public string Nickname { get; set; } public string Nickname { get; set; }
} }

View File

@ -587,6 +587,7 @@ namespace base_entity
new IdentityUser1 { Nickname = "nickname23", Username = "username23" } new IdentityUser1 { Nickname = "nickname23", Username = "username23" }
}; };
fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows(); fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows();
fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows();
bulkUsers = fsql.Select<IdentityUser1>().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray(); bulkUsers = fsql.Select<IdentityUser1>().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray();
bulkUsers[0].Nickname += "_bulkupdate"; bulkUsers[0].Nickname += "_bulkupdate";
bulkUsers[1].Nickname += "_bulkupdate"; bulkUsers[1].Nickname += "_bulkupdate";

View File

@ -800,5 +800,14 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@ -1650,6 +1650,14 @@
<param name="columns">属性名,或者字段名</param> <param name="columns">属性名,或者字段名</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.IInsert`1.IgnoreInsertValueSql(System.Linq.Expressions.Expression{System.Func{`0,System.Object}})">
<summary>
忽略 InsertValueSql 设置,将使用实体对象的值插入<para></para>
IgnoreInsertValueSql(a => a.Name) | IgnoreInsertValueSql(a => new{a.Name,a.Time}) | IgnoreInsertValueSql(a => new[]{"name","time"})
</summary>
<param name="columns">属性名,或者字段名</param>
<returns></returns>
</member>
<member name="M:FreeSql.IInsert`1.InsertIdentity"> <member name="M:FreeSql.IInsert`1.InsertIdentity">
<summary> <summary>
指定可插入自增字段 指定可插入自增字段

View File

@ -76,6 +76,14 @@ namespace FreeSql
/// <returns></returns> /// <returns></returns>
IInsert<T1> IgnoreColumns(string[] columns); IInsert<T1> IgnoreColumns(string[] columns);
/// <summary>
/// 忽略 InsertValueSql 设置,将使用实体对象的值插入<para></para>
/// IgnoreInsertValueSql(a => a.Name) | IgnoreInsertValueSql(a => new{a.Name,a.Time}) | IgnoreInsertValueSql(a => new[]{"name","time"})
/// </summary>
/// <param name="columns">属性名,或者字段名</param>
/// <returns></returns>
IInsert<T1> IgnoreInsertValueSql(Expression<Func<T1, object>> columns);
/// <summary> /// <summary>
/// 指定可插入自增字段 /// 指定可插入自增字段
/// </summary> /// </summary>

View File

@ -308,9 +308,9 @@ namespace FreeSql.Aop
#region AuditValue #region AuditValue
public class AuditValueEventArgs : EventArgs public class AuditValueEventArgs : EventArgs
{ {
public AuditValueEventArgs(AuditValueType autoValueType, ColumnInfo column, PropertyInfo property, object value, object obj) public AuditValueEventArgs(AuditValueType auditValueType, ColumnInfo column, PropertyInfo property, object value, object obj)
{ {
this.AuditValueType = autoValueType; this.AuditValueType = auditValueType;
this.Column = column; this.Column = column;
this.Property = property; this.Property = property;
this._value = value; this._value = value;

View File

@ -20,6 +20,7 @@ namespace FreeSql.Internal.CommonProvider
public CommonUtils _commonUtils; public CommonUtils _commonUtils;
public CommonExpression _commonExpression; public CommonExpression _commonExpression;
public Dictionary<string, bool> _ignore = new Dictionary<string, bool>(StringComparer.CurrentCultureIgnoreCase); public Dictionary<string, bool> _ignore = new Dictionary<string, bool>(StringComparer.CurrentCultureIgnoreCase);
public Dictionary<string, bool> _ignoreInsertValueSql = new Dictionary<string, bool>(StringComparer.CurrentCultureIgnoreCase);
public Dictionary<string, bool> _auditValueChangedDict = new Dictionary<string, bool>(StringComparer.CurrentCultureIgnoreCase); public Dictionary<string, bool> _auditValueChangedDict = new Dictionary<string, bool>(StringComparer.CurrentCultureIgnoreCase);
public TableInfo _table; public TableInfo _table;
public Func<string, string> _tableRule; public Func<string, string> _tableRule;
@ -72,6 +73,7 @@ namespace FreeSql.Internal.CommonProvider
_source.Clear(); _source.Clear();
_sourceOld = _source; _sourceOld = _source;
_ignore.Clear(); _ignore.Clear();
_ignoreInsertValueSql.Clear();
_auditValueChangedDict.Clear(); _auditValueChangedDict.Clear();
_params = null; _params = null;
IgnoreCanInsert(); IgnoreCanInsert();
@ -530,6 +532,7 @@ namespace FreeSql.Internal.CommonProvider
public IInsert<T1> IgnoreColumns(Expression<Func<T1, object>> columns) => IgnoreColumns(_commonExpression.ExpressionSelectColumns_MemberAccess_New_NewArrayInit(null, null, columns?.Body, false, null)); public IInsert<T1> IgnoreColumns(Expression<Func<T1, object>> columns) => IgnoreColumns(_commonExpression.ExpressionSelectColumns_MemberAccess_New_NewArrayInit(null, null, columns?.Body, false, null));
public IInsert<T1> InsertColumns(Expression<Func<T1, object>> columns) => InsertColumns(_commonExpression.ExpressionSelectColumns_MemberAccess_New_NewArrayInit(null, null, columns?.Body, false, null)); public IInsert<T1> InsertColumns(Expression<Func<T1, object>> columns) => InsertColumns(_commonExpression.ExpressionSelectColumns_MemberAccess_New_NewArrayInit(null, null, columns?.Body, false, null));
public IInsert<T1> IgnoreInsertValueSql(Expression<Func<T1, object>> columns) => IgnoreInsertValueSql(_commonExpression.ExpressionSelectColumns_MemberAccess_New_NewArrayInit(null, null, columns?.Body, false, null));
public IInsert<T1> IgnoreColumns(string[] columns) public IInsert<T1> IgnoreColumns(string[] columns)
{ {
@ -549,6 +552,15 @@ namespace FreeSql.Internal.CommonProvider
_ignore.Add(col.Attribute.Name, true); _ignore.Add(col.Attribute.Name, true);
return this; return this;
} }
public IInsert<T1> IgnoreInsertValueSql(string[] columns)
{
var cols = columns.Distinct().ToDictionary(a => a);
_ignoreInsertValueSql.Clear();
foreach (var col in _table.Columns.Values)
if (cols.ContainsKey(col.Attribute.Name) == true || cols.ContainsKey(col.CsName) == true)
_ignoreInsertValueSql.Add(col.Attribute.Name, true);
return this;
}
protected string TableRuleInvoke() protected string TableRuleInvoke()
{ {
@ -655,7 +667,7 @@ namespace FreeSql.Internal.CommonProvider
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {

View File

@ -63,7 +63,7 @@ namespace FreeSql.Custom.Oracle
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {

View File

@ -67,7 +67,7 @@ namespace FreeSql.Dameng.Curd
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {

View File

@ -63,7 +63,7 @@ namespace FreeSql.Odbc.Dameng
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {

View File

@ -63,7 +63,7 @@ namespace FreeSql.Odbc.Oracle
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {

View File

@ -80,7 +80,7 @@ namespace FreeSql.Oracle.Curd
foreach (var col in cols) foreach (var col in cols)
{ {
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {
@ -144,7 +144,7 @@ namespace FreeSql.Oracle.Curd
if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue; if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name)) continue;
if (colidx2 > 0) sb.Append(", "); if (colidx2 > 0) sb.Append(", ");
if (string.IsNullOrEmpty(col.DbInsertValue) == false) if (string.IsNullOrEmpty(col.DbInsertValue) == false && _ignoreInsertValueSql.ContainsKey(col.Attribute.Name) == false)
sb.Append(col.DbInsertValue); sb.Append(col.DbInsertValue);
else else
{ {