コード例 #1
0
        /// <summary>
        /// 检测并执行<see cref="IRecyclable"/>接口的逻辑
        /// </summary>
        /// <typeparam name="TEntity">实体基类</typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="entity">要检测的实体信息</param>
        /// <param name="operation">回收站操作类型</param>
        /// <returns></returns>
        public static TEntity CheckIRecycle <TEntity, TKey>(this TEntity entity, RecycleOperation operation)
            where TEntity : IEntity <TKey>
            where TKey : IEquatable <TKey>
        {
            if (!(entity is IRecyclable))
            {
                return(entity);
            }
            IRecyclable entity1 = entity as IRecyclable;

            switch (operation)
            {
            case RecycleOperation.LogicDelete:
                entity1.IsDeleted = true;
                break;

            case RecycleOperation.Restore:
                entity1.IsDeleted = false;
                break;

            case RecycleOperation.PhysicalDelete:
                if (!entity1.IsDeleted)
                {
                    throw new InvalidOperationException("数据不处于回收(IsDeleted==true)状态,不能永久删除。");
                }
                break;
            }
            return((TEntity)entity1);
        }
コード例 #2
0
        /// <summary>
        /// 检测并执行<see cref="IRecyclable"/>接口的逻辑
        /// </summary>
        /// <param name="entity">要检测的实体信息</param>
        /// <param name="operation">回收站操作类型</param>
        public static TEntity CheckIRecycle <TEntity, TKey>(this TEntity entity, RecycleOperation operation)
            where TEntity : IEntity <TKey>
        {
            if (!(entity is IRecyclable))
            {
                return(entity);
            }
            IRecyclable entity1 = entity as IRecyclable;

            switch (operation)
            {
            case RecycleOperation.LogicDelete:
                entity1.IsDeleted = true;
                break;

            case RecycleOperation.Restore:
                entity1.IsDeleted = false;
                break;

            case RecycleOperation.PhysicalDelete:
                break;
            }
            return((TEntity)entity1);
        }