剩下个工作就是交给翻译机进行翻译:(对作者的版本做了修改)
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>
发表回复