一步一步Asp.Net MVC系列_权限管理总结(下)

剩下个工作就是交给翻译机进行翻译:(对作者的版本做了修改)
  1:   /*  作者:       tianzh
  2:   *  创建时间:   2012/7/22 22:05:49
  3:   *
  4:   */
  5:  using System;
  6:  using System.Collections;
  7:  using System.Collections.Generic;
  8:  using System.Text;
  9:  using System.Linq;
 10:  using System.Data.Objects;
 11:  namespace TZHSWEET.Common
 12:  {
 13:  
 14:  
 15:      /// <summary>
 16:      /// 将检索规则 翻译成 where sql 语句,并生成相应的参数列表
 17:      /// 如果遇到{CurrentUserID}这种,翻译成对应的参数
 18:      /// </summary>
 19:      public class FilterTranslator
 20:      {
 21:          //几个前缀/后缀
 22:          /// <summary>
 23:          /// 左中括号[(用于表示数据库实体前的标识)
 24:          /// </summary>
 25:          protected char leftToken = '[';
 26:          /// <summary>
 27:          /// 用于可变参替换的标志
 28:          /// </summary>
 29:          protected char paramPrefixToken = '@';
 30:          /// <summary>
 31:          /// 右中括号(用于表示数据库实体前的标识)
 32:          /// </summary>
 33:          protected char rightToken = ']';
 34:          /// <summary>
 35:          /// 组条件括号
 36:          /// </summary>
 37:          protected char groupLeftToken = '(';
 38:          /// <summary>
 39:          /// 右条件括号
 40:          /// </summary>
 41:          protected char groupRightToken = ')';
 42:          /// <summary>
 43:          /// 模糊查询符号
 44:          /// </summary>
 45:          protected char likeToken = '%';
 46:          /// <summary>
 47:          /// 参数计数器
 48:          /// </summary>
 49:          private int paramCounter = 0;
 50:  
 51:          //几个主要的属性
 52:          public FilterGroup Group { get; set; }
 53:          /// <summary>
 54:          /// 最终的Where语句(包括可变参占位符)
 55:          /// </summary>
 56:          public string CommandText { get; private set; }
 57:          /// <summary>
 58:          /// 查询语句可变参数数组
 59:          /// </summary>
 60:          public IList<FilterParam> Parms { get; private set; }
 61:          /// <summary>
 62:          /// 是否为Entity To Sql 生成where翻译语句(Entity To Sql就需要在实体前面加it,例如it.ID=@ID and it.Name-@Name)
 63:          /// 否则为普通的SQL语句可变参拼接
 64:          /// </summary>
 65:          public bool IsEntityToSql { get; set; }
 66:          public FilterTranslator()
 67:              : this(null)
 68:          {
 69:              IsEntityToSql = false;
 70:          }
 71:          /// <summary>