コード例 #1
0
        /// <summary>
        /// 检测并执行<see cref="IUpdateAudited"/>接口的逻辑,此功能应按需调用
        /// </summary>
        /// <param name="entity">要检测的实体信息</param>
        public static TEntity CheckIUpdateAudited <TEntity, TKey>(this TEntity entity)
            where TEntity : IEntity <TKey>
            where TKey : IEquatable <TKey>
        {
            if (!(entity is IUpdateAudited))
            {
                return(entity);
            }
            IUpdateAudited entity1 = entity as IUpdateAudited;

            //未实现的记录当前用户信息
            entity1.LastUpdatedTime = DateTime.Now;
            return((TEntity)entity1);
        }
コード例 #2
0
        /// <summary>
        /// 检测并执行<see cref="IUpdateAudited{TUserKey}"/>接口的处理
        /// </summary>
        public static TEntity CheckIUpdateAudited <TEntity, TKey, TUserKey>(this TEntity entity, IPrincipal user)
            where TEntity : IEntity <TKey>
            where TUserKey : struct
        {
            if (!(entity is IUpdateAudited <TUserKey>))
            {
                return(entity);
            }

            IUpdateAudited <TUserKey> entity1 = (IUpdateAudited <TUserKey>)entity;

            entity1.LastUpdaterId   = user.Identity.GetUserId <TUserKey>();
            entity1.LastUpdatedTime = DateTime.Now;
            return((TEntity)entity1);
        }
コード例 #3
0
        /// <summary>
        /// 检测并执行<see cref="IUpdateAudited"/>接口的逻辑
        /// </summary>
        /// <param name="entity">要检测的实体信息</param>
        public static TEntity CheckIUpdateAudited <TEntity, TKey>(this TEntity entity) where TEntity : IEntity <TKey>
        {
            if (!(entity is IUpdateAudited))
            {
                return(entity);
            }
            IUpdateAudited entity1  = entity as IUpdateAudited;
            ClaimsIdentity identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;

            if (identity != null && identity.IsAuthenticated)
            {
                entity1.LastUpdatorUserId = identity.GetClaimValue(ClaimTypes.NameIdentifier);
            }
            entity1.LastUpdatedTime = DateTime.Now;
            return((TEntity)entity1);
        }
コード例 #4
0
        /// <summary>
        /// 检测并执行<see cref="IUpdateAudited{TUserKey}"/>接口的处理
        /// </summary>
        public static TEntity CheckIUpdateAudited <TEntity, TKey, TUserKey>(this TEntity entity, IPrincipal user)
            where TEntity : IEntity <TKey>
            where TKey : IEquatable <TKey>
            where TUserKey : struct, IEquatable <TUserKey>
        {
            if (!(entity is IUpdateAudited <TUserKey>))
            {
                return(entity);
            }

            IUpdateAudited <TUserKey> entity1 = (IUpdateAudited <TUserKey>)entity;

            entity1.LastUpdaterId = user.Identity.IsAuthenticated ? (TUserKey?)user.Identity.GetUserId <TUserKey>() : null;
            if (entity1.LastUpdatedTime == null || entity1.LastUpdatedTime.Value == default(DateTime))
            {
                entity1.LastUpdatedTime = DateTime.Now;
            }
            return((TEntity)entity1);
        }
コード例 #5
0
        /// <summary>
        /// 检测并执行<see cref="IUpdateAudited"/>接口的逻辑,此功能应按需调用
        /// </summary>
        /// <param name="entity">要检测的实体信息</param>
        public static TEntity CheckIUpdateAudited <TEntity, TKey>(this TEntity entity)
            where TEntity : IEntity <TKey>
            where TKey : IEquatable <TKey>
        {
            if (!(entity is IUpdateAudited))
            {
                return(entity);
            }
            IUpdateAudited entity1 = entity as IUpdateAudited;

            if (Thread.CurrentPrincipal.Identity is ClaimsIdentity identity && identity.IsAuthenticated)
            {
                string id = identity.GetClaimValueFirstOrDefault(ClaimTypes.NameIdentifier);
                if (!string.IsNullOrEmpty(id))
                {
                    entity1.LastUpdatorUserId = id;
                }
            }
            entity1.LastUpdatedTime = DateTime.Now;
            return((TEntity)entity1);
        }