mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 增加 Aop.AuditValue 事件,在插入/更新数据时审计属性值;
This commit is contained in:
parent
baa6c413a0
commit
b57d35ae9b
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.MySqlConnector
|
||||||
|
{
|
||||||
|
public class MySqlAop
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.mysql.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.mysql.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.mysql.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
FreeSql.Tests/FreeSql.Tests/MySql/MySqlAopTest.cs
Normal file
40
FreeSql.Tests/FreeSql.Tests/MySql/MySqlAopTest.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.MySql
|
||||||
|
{
|
||||||
|
public class MySqlAopTest
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.mysql.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.mysql.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.mysql.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
FreeSql.Tests/FreeSql.Tests/Oracle/OracleAopTest.cs
Normal file
40
FreeSql.Tests/FreeSql.Tests/Oracle/OracleAopTest.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.Oracle
|
||||||
|
{
|
||||||
|
public class OracleAopTest
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.oracle.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.oracle.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.oracle.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAopTest.cs
Normal file
40
FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAopTest.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.PostgreSQL
|
||||||
|
{
|
||||||
|
public class PostgreSQLAopTest
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.pgsql.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.pgsql.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.pgsql.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAopTest.cs
Normal file
40
FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAopTest.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.SqlServer
|
||||||
|
{
|
||||||
|
public class SqlServerAopTest
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.sqlserver.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.sqlserver.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.sqlserver.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAopTest.cs
Normal file
40
FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAopTest.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.Sqlite
|
||||||
|
{
|
||||||
|
public class SqliteAopTest
|
||||||
|
{
|
||||||
|
|
||||||
|
class TestAuditValue
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
[Now]
|
||||||
|
public DateTime createtime { get; set; }
|
||||||
|
}
|
||||||
|
class NowAttribute: Attribute { }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditValue()
|
||||||
|
{
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var item = new TestAuditValue();
|
||||||
|
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> audit = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Property.GetCustomAttribute<NowAttribute>(false) != null)
|
||||||
|
e.Value = DateTime.Now;
|
||||||
|
};
|
||||||
|
g.sqlite.Aop.AuditValue += audit;
|
||||||
|
|
||||||
|
g.sqlite.Insert(item).ExecuteAffrows();
|
||||||
|
|
||||||
|
g.sqlite.Aop.AuditValue -= audit;
|
||||||
|
|
||||||
|
Assert.Equal(item.createtime.Date, now.Date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2020,6 +2020,11 @@
|
|||||||
CodeFirst迁移,执行完成触发
|
CodeFirst迁移,执行完成触发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.IAop.AuditValue">
|
||||||
|
<summary>
|
||||||
|
Insert/Update自动值处理, e.Column.SetMapValue(
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.Aop.ToListEventArgs.List">
|
<member name="P:FreeSql.Aop.ToListEventArgs.List">
|
||||||
<summary>
|
<summary>
|
||||||
可重新装饰的引用数据
|
可重新装饰的引用数据
|
||||||
@ -2145,6 +2150,26 @@
|
|||||||
耗时(单位:毫秒)
|
耗时(单位:毫秒)
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.AuditValueEventArgs.AutoValueType">
|
||||||
|
<summary>
|
||||||
|
类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.AuditValueEventArgs.Column">
|
||||||
|
<summary>
|
||||||
|
属性列的元数据
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.AuditValueEventArgs.Property">
|
||||||
|
<summary>
|
||||||
|
反射的属性信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.AuditValueEventArgs.Value">
|
||||||
|
<summary>
|
||||||
|
获取实体的属性值,也可以设置实体的属性新值
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
|
<member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
|
||||||
<summary>
|
<summary>
|
||||||
【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
|
【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using FreeSql.DatabaseModel;
|
using FreeSql.DatabaseModel;
|
||||||
|
using FreeSql.Internal.Model;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
@ -53,6 +54,11 @@ namespace FreeSql
|
|||||||
/// CodeFirst迁移,执行完成触发
|
/// CodeFirst迁移,执行完成触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Insert/Update自动值处理, e.Column.SetMapValue(
|
||||||
|
/// </summary>
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> AuditValue { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,4 +270,43 @@ namespace FreeSql.Aop
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class AuditValueEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public AuditValueEventArgs(AutoValueType autoValueType, ColumnInfo column, PropertyInfo property, object value)
|
||||||
|
{
|
||||||
|
this.AutoValueType = autoValueType;
|
||||||
|
this.Column = column;
|
||||||
|
this.Property = property;
|
||||||
|
this.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 类型
|
||||||
|
/// </summary>
|
||||||
|
public AutoValueType AutoValueType { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 属性列的元数据
|
||||||
|
/// </summary>
|
||||||
|
public ColumnInfo Column { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 反射的属性信息
|
||||||
|
/// </summary>
|
||||||
|
public PropertyInfo Property { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 获取实体的属性值,也可以设置实体的属性新值
|
||||||
|
/// </summary>
|
||||||
|
public object Value
|
||||||
|
{
|
||||||
|
get => _value;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_value = value;
|
||||||
|
this.IsChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private object _value;
|
||||||
|
internal bool IsChanged { get; private set; }
|
||||||
|
}
|
||||||
|
public enum AutoValueType { Update, Insert }
|
||||||
}
|
}
|
@ -17,5 +17,6 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
public EventHandler<Aop.CurdAfterEventArgs> CurdAfter { get; set; }
|
public EventHandler<Aop.CurdAfterEventArgs> CurdAfter { get; set; }
|
||||||
public EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore { get; set; }
|
public EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore { get; set; }
|
||||||
public EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
public EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
||||||
|
public EventHandler<Aop.AuditValueEventArgs> AuditValue { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -559,6 +559,13 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
object val = col.GetMapValue(d);
|
object val = col.GetMapValue(d);
|
||||||
if (col.Attribute.IsPrimary && col.Attribute.MapType.NullableTypeOrThis() == typeof(Guid) && (val == null || (Guid)val == Guid.Empty))
|
if (col.Attribute.IsPrimary && col.Attribute.MapType.NullableTypeOrThis() == typeof(Guid) && (val == null || (Guid)val == Guid.Empty))
|
||||||
col.SetMapValue(d, val = FreeUtil.NewMongodbId());
|
col.SetMapValue(d, val = FreeUtil.NewMongodbId());
|
||||||
|
if (_orm.Aop.AuditValue != null)
|
||||||
|
{
|
||||||
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AutoValueType.Insert, col, _table.Properties[col.CsName], val);
|
||||||
|
_orm.Aop.AuditValue(this, auditArgs);
|
||||||
|
if (auditArgs.Value != null)
|
||||||
|
col.SetMapValue(d, val = auditArgs.Value);
|
||||||
|
}
|
||||||
if (_noneParameter)
|
if (_noneParameter)
|
||||||
sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, col.Attribute.MapType, val));
|
sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, col.Attribute.MapType, val));
|
||||||
else
|
else
|
||||||
|
@ -605,15 +605,20 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (colidx > 0) sb.Append(", ");
|
if (colidx > 0) sb.Append(", ");
|
||||||
sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
|
sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
|
||||||
var value = col.GetMapValue(_source.First());
|
var val = col.GetMapValue(_source.First());
|
||||||
if (_noneParameter)
|
if (_orm.Aop.AuditValue != null)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, col.Attribute.MapType, value));
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AutoValueType.Update, col, _table.Properties[col.CsName], val);
|
||||||
|
_orm.Aop.AuditValue(this, auditArgs);
|
||||||
|
if (auditArgs.Value != null)
|
||||||
|
col.SetMapValue(_source.First(), val = auditArgs.Value);
|
||||||
}
|
}
|
||||||
|
if (_noneParameter)
|
||||||
|
sb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, col.Attribute.MapType, val));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
|
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
|
||||||
_commonUtils.AppendParamter(_paramsSource, null, col.Attribute.MapType, value);
|
_commonUtils.AppendParamter(_paramsSource, null, col.Attribute.MapType, val);
|
||||||
}
|
}
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
@ -646,17 +651,22 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
cwsb.Append(" \r\nWHEN ");
|
cwsb.Append(" \r\nWHEN ");
|
||||||
ToSqlWhen(cwsb, _table.Primarys, d);
|
ToSqlWhen(cwsb, _table.Primarys, d);
|
||||||
cwsb.Append(" THEN ");
|
cwsb.Append(" THEN ");
|
||||||
var value = col.GetMapValue(d);
|
var val = col.GetMapValue(d);
|
||||||
if (_noneParameter)
|
if (_orm.Aop.AuditValue != null)
|
||||||
{
|
{
|
||||||
cwsb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, col.Attribute.MapType, value));
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AutoValueType.Update, col, _table.Properties[col.CsName], val);
|
||||||
|
_orm.Aop.AuditValue(this, auditArgs);
|
||||||
|
if (auditArgs.Value != null)
|
||||||
|
col.SetMapValue(_source.First(), val = auditArgs.Value);
|
||||||
}
|
}
|
||||||
|
if (_noneParameter)
|
||||||
|
cwsb.Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, col.Attribute.MapType, val));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cwsb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
|
cwsb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"p_{_paramsSource.Count}")));
|
||||||
_commonUtils.AppendParamter(_paramsSource, null, col.Attribute.MapType, value);
|
_commonUtils.AppendParamter(_paramsSource, null, col.Attribute.MapType, val);
|
||||||
}
|
}
|
||||||
if (isnull == false) isnull = value == null || value == DBNull.Value;
|
if (isnull == false) isnull = val == null || val == DBNull.Value;
|
||||||
}
|
}
|
||||||
cwsb.Append(" END");
|
cwsb.Append(" END");
|
||||||
if (isnull == false)
|
if (isnull == false)
|
||||||
|
@ -70,6 +70,13 @@ namespace FreeSql.Oracle.Curd
|
|||||||
object val = col.GetMapValue(d);
|
object val = col.GetMapValue(d);
|
||||||
if (col.Attribute.IsPrimary && col.Attribute.MapType.NullableTypeOrThis() == typeof(Guid) && (val == null || (Guid)val == Guid.Empty))
|
if (col.Attribute.IsPrimary && col.Attribute.MapType.NullableTypeOrThis() == typeof(Guid) && (val == null || (Guid)val == Guid.Empty))
|
||||||
col.SetMapValue(d, val = FreeUtil.NewMongodbId());
|
col.SetMapValue(d, val = FreeUtil.NewMongodbId());
|
||||||
|
if (_orm.Aop.AuditValue != null)
|
||||||
|
{
|
||||||
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AutoValueType.Insert, col, _table.Properties[col.CsName], val);
|
||||||
|
_orm.Aop.AuditValue(this, auditArgs);
|
||||||
|
if (auditArgs.Value != null)
|
||||||
|
col.SetMapValue(d, val = auditArgs.Value);
|
||||||
|
}
|
||||||
if (_noneParameter)
|
if (_noneParameter)
|
||||||
sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, col.Attribute.MapType, val));
|
sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, col.Attribute.MapType, val));
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user