diff --git a/FreeSql/Interface/IAop.cs b/FreeSql/Interface/IAop.cs index f9a8b354..17a189c4 100644 --- a/FreeSql/Interface/IAop.cs +++ b/FreeSql/Interface/IAop.cs @@ -347,6 +347,12 @@ namespace FreeSql.Aop /// 实体对象 /// public object Object { get; } + /// + /// 中断实体对象审计 + /// false: 每个实体对象的属性都会审计(默认) + /// true: 每个实体对象只审计一次 + /// + public bool ObjectAuditBreak { get; set; } = false; } public enum AuditValueType { Update, Insert, InsertOrUpdate } #endregion diff --git a/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs b/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs index 343e8e3c..1f612f98 100644 --- a/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/InsertOrUpdateProvider.cs @@ -108,6 +108,8 @@ namespace FreeSql.Internal.CommonProvider if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false) changedDict.Add(col.Attribute.Name, true); } + if (auditArgs.ObjectAuditBreak) break; + if (val == null && col.Attribute.MapType == typeof(string) && col.Attribute.IsNullable == false) col.SetValue(data, val = ""); } diff --git a/FreeSql/Internal/CommonProvider/InsertProvider.cs b/FreeSql/Internal/CommonProvider/InsertProvider.cs index bc6c7e2d..045fd998 100644 --- a/FreeSql/Internal/CommonProvider/InsertProvider.cs +++ b/FreeSql/Internal/CommonProvider/InsertProvider.cs @@ -175,6 +175,7 @@ namespace FreeSql.Internal.CommonProvider if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false) changedDict.Add(col.Attribute.Name, true); } + if (auditArgs.ObjectAuditBreak) break; } if (col.Attribute.IsPrimary) { diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs index d928fa87..8678f0bb 100644 --- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs @@ -424,6 +424,8 @@ namespace FreeSql.Internal.CommonProvider if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false) changedDict.Add(col.Attribute.Name, true); } + if (auditArgs.ObjectAuditBreak) break; + if (val == null && col.Attribute.MapType == typeof(string) && col.Attribute.IsNullable == false) col.SetValue(d, val = ""); } @@ -446,6 +448,8 @@ namespace FreeSql.Internal.CommonProvider if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false) changedDict.Add(col.Attribute.Name, true); } + if (auditArgs.ObjectAuditBreak) break; + if (val == null && col.Attribute.MapType == typeof(string) && col.Attribute.IsNullable == false) col.SetValue(data, val = ""); }