如恶化自定义函数Expression转化为sql
这篇文章主要介绍“如恶化自定义函数Expression转化为sql”,在日常操作中,相信很多人在如恶化自定义函数Expression转化为sql问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如恶化自定义函数Expression转化为sql”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10年积累的成都做网站、成都网站设计、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有古交免费网站建设让你可以放心的选择与我们合作。
一.首先建立一个建一个扩展类,控制只能允许这些函数出现,如果出现其他函数就直接报异常。
1 public static class SQLMethods 2 { 3 public static bool DB_In(this T t, List list) // in 4 { 5 return true; 6 } 7 public static Boolean DB_NotIn (this T t, List list) // not in 8 { 9 return true; 10 } 11 public static int DB_Length(this string t) // len(); 12 { 13 return 0; 14 } 15 public static bool DB_Like(this string t, string str) // like 16 { 17 return true; 18 } 19 public static bool DB_NotLike(this string t, string str) // not like 20 { 21 return true; 22 } 23 }
View Code
我们要生成sql,那么函数的返回值没有意思,len() ,like,和not 只能针对字符串类型, in 和not in 可以针对所有类型。
二.处理不同函数相关的逻辑。
1.判断函数所在类的命名空间是否我是我们要求的。
2.根据函数名处理。出现意外函数抛出异常
代码如下"
1 private string DealMethodsCall(MethodCallExpression m_exp) 2 { 3 var k = m_exp; 4 var g = k.Arguments[0]; 5 /// 控制函数所在类名。 6 if (k.Method.DeclaringType != typeof(SQLMethods)) 7 { 8 throw new Exception("无法识别函数"); 9 } 10 switch (k.Method.Name) 11 { 12 case "DB_Length": 13 { 14 var exp = k.Arguments[0]; 15 return "LEN(" + DealExpression(exp) + ")"; 16 } 17 case "DB_In": 18 case "DB_NotIn": 19 { 20 var exp1 = k.Arguments[0]; 21 var exp2 = k.Arguments[1]; 22 string methods = string.Empty; 23 if (k.Method.Name == "In") 24 { 25 methods = " IN "; 26 } 27 else 28 { 29 methods = " NOT IN "; 30 } 31 return DealExpression(exp1) + methods + DealExpression(exp2); 32 } 33 case "DB_Like": 34 case "DB_NotLike": 35 { 36 var exp1 = k.Arguments[0]; 37 var exp2 = k.Arguments[1]; 38 string methods = string.Empty; 39 if (k.Method.Name == "DB_Like") 40 { 41 methods = " LIKE "; 42 } 43 else 44 { 45 methods = " NOT LIKE "; 46 } 47 return DealExpression(exp1) + methods + DealExpression(exp2); 48 49 } 50 } 51 /// 未知的函数 52 throw new Exception("意外的函数"); 53 }
处理相关函数
三. 调试结果
到此,关于“如恶化自定义函数Expression转化为sql”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
分享文章:如恶化自定义函数Expression转化为sql
本文路径:http://myzitong.com/article/ipossi.html