自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

欣賞另一種Orm的設(shè)計(jì)風(fēng)格:大道至簡(jiǎn)

開(kāi)發(fā) 后端
了解sql的原生態(tài)編程了嗎?如果你覺(jué)得繁瑣的話那就來(lái)看看Orm的設(shè)計(jì)風(fēng)格:大道至簡(jiǎn)!

一、使用sql及存儲(chǔ)過(guò)程

1)使用List<Dictionary<string, MObject>>

1.使用sql ,體驗(yàn)原生態(tài)的感覺(jué)

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

2.使用mql,智能感知帶來(lái)的優(yōu)雅體驗(yàn)

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

2)MQL 全面接觸

2.1 MQL的標(biāo)準(zhǔn)查詢

  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 [UserWHERE [User].[ClassID] IN (SELECT [Class].[ClassID] FROM [Class] WHERE [Class].[ClassName]=@p1  AND  [Class].[ClassID]>@p2 ) )  
  12. @p1=綜合測(cè)試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的使用預(yù)覽

  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測(cè)試---------------------");  
  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.使用存儲(chǔ)過(guò)程

  1. DataSet dataset=db.ExecuteProToDataSet("存儲(chǔ)過(guò)程名",參數(shù)一,參數(shù)二); 

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節(jié)點(diǎn)

  1. <appSettings> 
  2. <add key="SQL_XML_FILE_NAME" value="C:\Moon\Moon.Orm\sql.xml"></add>//如果不是全路徑,則默認(rèn)在dll生成目錄  
  3. </appSettings> 

 

2.配置xml(sql.xml)

  1. <?xml version="1.0"?> 
  2. <sqls> 
  3. <sqlxml id="getname"> 
  4. <sql>select name from user where id>@</Sql> 
  5. <description>查詢用戶名(描述信息)</Description> 
  6. </sqlxml> 
  7. </sqls> 

3.使用id進(jìn)行查詢

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

5)sql之王者歸來(lái)

使用GetDynamicList ,讓你體驗(yàn)另一種自由

  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);//都是強(qiáng)類型  

以下是體驗(yàn)強(qiáng)類型:)

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

責(zé)任編輯:林師授 來(lái)源: 博客園
相關(guān)推薦

2015-12-08 11:13:38

戴爾云計(jì)算

2014-11-17 15:23:02

SAPSAP HANA

2016-03-25 15:37:18

數(shù)據(jù)治理數(shù)據(jù)分析BI

2017-11-20 15:15:24

群暉

2015-09-14 13:48:35

數(shù)據(jù)挖掘數(shù)據(jù)可視化

2014-07-10 17:21:41

SAPSAP論壇簡(jiǎn)化

2015-06-09 22:25:06

SAP大道至簡(jiǎn)

2014-09-17 14:37:06

2018-04-18 07:34:58

2013-05-22 15:31:07

AOP的CGlib實(shí)現(xiàn)

2017-02-07 14:27:24

安全風(fēng)險(xiǎn)威脅

2013-09-27 09:30:33

2024-10-25 13:31:31

2015-02-09 18:19:38

SAPS4HANAERP

2016-03-03 10:29:31

用戶信息改進(jìn)

2010-07-21 16:23:09

運(yùn)行telnet程序

2011-12-29 21:28:31

Metro UI

2023-06-18 23:19:17

ChatGPTPPT方式

2016-08-16 13:08:23

Angular2ng-controllTypeScript

2016-07-11 16:18:26

互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)