欣赏另一种Orm的设计风格:大道至简

一、使用sql及存储过程

创新互联建站成立于2013年,我们提供高端重庆网站建设公司成都网站制作公司成都网站设计、网站定制、全网营销推广微信平台小程序开发、微信公众号开发、seo优化服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为汽车玻璃修复企业提供源源不断的流量和订单咨询。

1)使用List>

1.使用sql ,体验原生态的感觉

 
 
 
 
  1. string sql="select * from Class where ClassName = @";  
  2. string sql2="select * from Class where DateTimem = @";  
  3. List> mylist=db.ExecuteSqlToDictionaryList(sql,"boy'");  
  4. List> mylist2=db.ExecuteSqlToDictionaryList(sql2,DateTime.Parse("2013-10-10 14:40:08"));  
  5. foreach(var oneClass in mylist){  
  6.                     string className=oneClass["className"].To();  
  7.                     long id=oneClass["Classid"].To();  
  8.                     DateTime datetimem=oneClass["datetimem"].To();//不用区分大小写  
  9.                     Console.WriteLine(className+"  "+id+"  "+datetimem);  

2.使用mql,智能感知带来的优雅体验

 
 
 
 
  1. var  list=db.GetDictionaryList(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(0))) 

2)MQL 全面接触

2.1 MQL的标准查询

 
 
 
 
  1. var mm=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName).  
  2.  
  3. Where(ClassSet.ClassName.Contains("s").And(ClassSet.ClassID.BiggerThan(9)));  
  4.  
  5.    
  6. SELECT [Class].[ClassID],[Class].[ClassName] FROM [Class] WHERE [Class].[ClassName] LIKE @p1  AND  [Class].[ClassID]>@p2  
  7. @p1=%s%  
  8. @p2=9 

2.2 MQL的嵌套查询(含有Top查询:支持mysql、oracle、postgreSQL、sqlserver、sqlite)

 
 
 
 
  1. var qiantao=ScoreSet.SelectAll().Where(  
  2.                     ScoreSet.UserID.In(UserSet.Select(UserSet.UserID).Where(  
  3.                         UserSet.ClassID.In(  
  4.                         ClassSet.Select(ClassSet.ClassID).Where(  
  5.                                 ClassSet.ClassName.Equal(c.ClassName).And(ClassSet.ClassID.BiggerThan(0))  
  6.                             )  
  7.                         )  
  8.                     )  
  9.                   )   
  10.                 ).Top(1);  
  11.   SELECT TOP 1 [Score].* FROM [Score] WHERE [Score].[UserID] IN (SELECT [User].[UserID] FROM [User] WHERE [User].[ClassID] IN (SELECT [Class].[ClassID] FROM [Class] WHERE [Class].[ClassName]=@p1  AND  [Class].[ClassID]>@p2 ) )  
  12. @p1=综合测试ClassName2  
  13. @p2=0 

2.3 MQL的分组查询

 
 
 
 
  1. var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS("sum"),ScoreSet.TypeName).  
  2.  
  3. Where(ScoreSet.ScoreM.BiggerThanOrEqual(100)).  
  4.  
  5. GroupBy(ScoreSet.TypeName).  
  6.  
  7. Having(ScoreSet.ScoreM.Sum().BiggerThan(300));  
  8.  
  9.    
  10. SELECT SUM([Score].[ScoreM]) AS 'sum',[Score].[TypeName] FROM [Score] WHERE  [Score].[ScoreM]>=@p1  GROUP BY [Score].[TypeName]  HAVING  SUM([Score].[ScoreM])>@p2  
  11. @p1=100  
  12. @p2=300 

2.4 MQL的连接查询

 
 
 
 
  1. var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)  
  2.                     .LeftJoin(  
  3.                     UserSet.Select(UserSet.UserID))  
  4.                     .ON(ClassSet.ClassID.Equal(UserSet.UserID))  
  5.                     .Where(UserSet.UserID.BiggerThan(9));  
  6. SELECT [Class].[ClassID],[Class].[ClassName],[User].[UserID] FROM [Class] LEFT JOIN [User] ON [Class].[ClassID]=[User].[UserID]  WHERE  [User].[UserID]>@p1  
  7. @p1=9 

2.5 MQL的Union查询

 
 
 
 
  1. var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))  
  2.                     .Union(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));  
  3.    
  4. var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))  
  5.                     .UnionAll(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));  
  6.  
  7.    
  8. SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1  UNION  SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2  
  9. @p1=1  
  10. @p2=2  
  11. SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1  UNION ALL SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2  
  12. @p1=1  
  13. @p2=2 

2.6 MQL的使用预览

 
 
 
 
  1. public static void Main(string[] args)  
  2.         {  
  3.               
  4.             using (var db=Db.CreateDefaultDb()) {  
  5.                 db.TransactionEnabled=true;  
  6.                 db.DebugEnabled=true;  
  7.                 Console.WriteLine("---------------嵌套查询---------------------");  
  8.                 var qiantao=ScoreSet.SelectAll().Where(  
  9.                     ScoreSet.UserID.In(UserSet.Select(UserSet.UserID).Where(  
  10.                         UserSet.ClassID.In(  
  11.                         ClassSet.Select(ClassSet.ClassID).Where(  
  12.                                 ClassSet.ClassName.Equal(c.ClassName).And(ClassSet.ClassID.BiggerThan(0))  
  13.                             )  
  14.                         )  
  15.                     )  
  16.                   )   
  17.                 ).Top(1);  
  18.                  
  19.                 Console.WriteLine("---------------分组查询---------------------");  
  20.                 var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS("sum"),ScoreSet.TypeName).Where(ScoreSet.ScoreM.BiggerThanOrEqual(100)).GroupBy(ScoreSet.TypeName).Having(ScoreSet.ScoreM.Sum().BiggerThan(300));  
  21.                 
  22.                 Console.WriteLine("---------------连接查询---------------------");  
  23.                 var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)  
  24.                     .LeftJoin(  
  25.                     UserSet.Select(UserSet.UserID))  
  26.                     .ON(ClassSet.ClassID.Equal(UserSet.UserID))  
  27.                     .Where(UserSet.UserID.BiggerThan(9));  
  28.  
  29.             }  
  30.             Console.WriteLine("---------------Union测试---------------------");  
  31.             using (var db=Db.CreateDefaultDb()) {  
  32.                 db.TransactionEnabled=true;  
  33.                 db.DebugEnabled=true;  
  34.                   
  35.                 var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))  
  36.                     .Union(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));   
  37.             }  
  38.         } 

3)使用DataSet

1.使用存储过程

 
 
 
 
  1. DataSet dataset=db.ExecuteProToDataSet("存储过程名",参数一,参数二); 

2.使用sql

 
 
 
 
  1. DataSet dataset=db.ExecuteSqlToDataSet(sql,"boy"); 

3.使用mql

 
 
 
 
  1. DataSet dataset=db.GetDataSet(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(0))); 

4)使用xml配置sql查询

1.配置config节点

 
 
 
 
  1.  
  2. //如果不是全路径,则默认在dll生成目录  
  3.  

2.配置xml(sql.xml)

 
 
 
 
  1.  
  2.  
  3.  
  4. select name from user where id>@ 
  5. 查询用户名(描述信息) 
  6.  
  7.  

3.使用id进行查询

 
 
 
 
  1. var list=db.GetDictionaryList(XmlHelper.GetSqlXmlByID("getname"),"boy"); 

5)sql之王者归来

使用GetDynamicList ,让你体验另一种自由

 
 
 
 
  1. object,但在.net 4.0下面,您可以用dynamic直接取值.  
  2. string sql22="select * from Score";  
  3. dynamic list22=db.GetDynamicList(sql22,"Score");  
  4. foreach(var a in list22){  
  5. Console.WriteLine(a.ID+"--"+a.ScoreM+"--"+a.UserID+"--"+a.TypeName);//都是强类型  

以下是体验强类型:)

原文链接:http://www.cnblogs.com/humble/p/3380065.html

当前名称:欣赏另一种Orm的设计风格:大道至简
URL标题:http://www.shufengxianlan.com/qtweb/news25/222625.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联