diff --git a/实体特性.md b/实体特性.md index a0e8619..4451aeb 100644 --- a/实体特性.md +++ b/实体特性.md @@ -89,12 +89,31 @@ class Topic { } ``` -使用数据库时间执行插入数据,注意: + v0.12.4 使用数据库时间执行插入数据,注意: 1、一但设置了这个特性,插入的时候设置属性值是无效的; 2、插入实体执行成功后,实体的值还是 c# 时间; +如果对时间精度要求不高,推荐下面的做法,先计算本地与服务器时间差距,再使用 Aop 统一处理: + +```csharp +var serverTime = fsql.Select().Limit(1).First(a => DateTime.UtcNow}); +var timeOffset = DateTime.UtcNow.Subtract(serverTime); //减去数据库时间 + +fsql.Aop.AuditValue += new EventHandler((_, e) => +{ + if (e.Column.Attribute.MapType.NullableTypeOrThis() == typeof(DateTime)) + { + if (e.Value == null || (DateTime)e.Value == default(DateTime)) + { + e.Value = DateTime.Now.Subtract(timeOffset); //使用本地时区保存 + return; + } + } +}); +``` + ## 可空(Nullable) ```csharp