Êý¾Ý¿â×é¼þ Hxj.Data £¨¶þÊ®£© £¨·ÖÒ³£©
·ÖÒ³ÔÚÇ°ÃæºÃ¼¸½ÚÖеÄÁÐ×ÓÖÐÒѾ³öÏÖ£¬ÏÖÔÚÔÙÏêϸ½²½âһϡ£ ÓÐÈýÖÖ·½·¨È¥ÊµÏÖ£º 1¡¢Top(int topCount) ·½·¨
ÔÚsqlserverºÍmsaccessÖÐÆäʵ¾ÍÊÇtop , ÔÚoracleͨ¹ýrownumʵÏÖ¡£ 2¡¢From(int startIndex, int endIndex) ´ÓstartIndexÌõµ½endIndexÌõÖ®¼äµÄ¼Ç¼Êý¡£ 3¡¢Page(int pageSize, int pageIndex) ÿҳpageSizeÌõ£¬µÚpageIndexÒ³ ÏÂÃæ¾ÍÒÀ´Î¶ÔÕâÈý¸ö·½·¨¾ÙÀý˵Ã÷¡£ top·½·¨£º
DbSession.Default.From
¸Ã²éѯʱ²éѯproducts±íÖеÄǰ10Ìõ¼Ç¼£¬Éú³ÉµÄsqlÓï¾äÈçÏ£º(ÈçºÎÊä³ö²é¿´×é¼þÉú³ÉµÄsql)
Text:
SELECT TOP 10 * FROM [Products]
from·½·¨£º
DbSession.Default.From
²éÕÒµÚ3Ìõµ½µÚ8ÌõµÄÊý¾Ý£¨°üÀ¨µÚ3ÌõºÍµÚ8Ìõ£©£¬Éú³ÉµÄsqlÓï¾äÈçÏ£º
Text:
SELECT * FROM
( SELECT TOP 6 * FROM
( SELECT TOP 8 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC
page·½·¨£º
41
DbSession.Default.From
²éѯÿҳ10ÌõµÄµÚ2Ò³Êý¾Ý£¬sqlÓï¾äÈçÏ£º
Text:
SELECT * FROM
( SELECT TOP 10 * FROM
( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC
¿ÉÒÔ¿´³öfrom·½·¨ºÍpage·½·¨Éú³ÉµÄsqlÓï¾äÊǸñʽÊÇÒ»ÑùµÄ£¬Æäʵpage·½·¨×îÖÕ»¹Êǵ÷ÓÃfrom·½·¨£¬
Èç¹ûfromµÄstartIndex²ÎÊýµÈÓÚ1¾Í»áµ÷ÓÃtop·½·¨À´²éѯ¡£ ĬÈÏÇé¿öÏÂÎÒÃDz¢Ã»ÓÐÉèÖÃÅÅÐò£¬×é¼þÔò»á×Ô¶¯Ìí¼ÓÒ»¸öÅÅÐò£¬Èç¹ûÓÐÖ÷¼üÔòÑ¡Ö÷¼üÅÅÐò£¬²»È»Ñ¡Ò»¸öÆäËûÁÐÅÅÐò¡£
µ±È»ÔںܶàÇé¿öÏÂÎÒÃÇÊÇÐèÒªÉèÖÃÄÄЩÁÐÅÅÐòµÄ¡£ ÀýÈ磺
DbSession.Default.From
.OrderBy(Products._.UnitPrice.Desc) .Where(Products._.CategoryID == 2) .ToList();
²éѯÌõ¼þÊÇcategoryidµÈÓÚ2£¬°´ÕÕunitpriceµ¹ÐðÅÅÐò£¬Ã¿Ò³10ÌõµÄµÚ2Ò³Êý¾Ý¡£
Éú³ÉµÄsqlÈçÏ£º
Text:
SELECT * FROM
( SELECT TOP 2 * FROM [Products] WHERE [Products].[CategoryID] = @bee7551993404c8592f07f9b01710bb5 ORDER BY [Products].[UnitPrice] ASC) AS temp_table ORDER BY [UnitPrice] DESC
Parameters:
@bee7551993404c8592f07f9b01710bb5[Int32] = 2
ÕâÑùµÄsqlÓï¾äÊDz»ÊdzöºõÒâÁϰ¡£¬ÔÀ´·ûºÏÌõ¼þµÄ²éѯµÚ¶þÒ³Ö»ÓÐ2ÌõÊý¾Ý£¬ËùÒÔ²éѯµÄʱºò¾ÍÖ±½ÓunitpriceÕýÐòtop 2¾ÍÍê½áÁË¡£ ÎÒÃǰÑÌõ¼þÈ¥µôÔÙ¿´¿´£º
DbSession.Default.From
.OrderBy(Products._.UnitPrice.Desc) //.Where(Products._.CategoryID == 2) .ToList(); Éú³ÉµÄsqlÈçÏ£º
Text:
SELECT * FROM
42
( SELECT TOP 10 * FROM
( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[UnitPrice] DESC) AS tempIntable ORDER BY [UnitPrice] ASC) AS tempOuttable ORDER BY [UnitPrice] DESC
ÕâÑùËãÊÇÕý³£µÄÉú³É¸ñʽÁË¡£
ÒÔÉϵÄsql½Å±¾¶¼ÊÇÔÚsql server2000ÏÂÉú³ÉµÄ¡£
ÆäʵÔÚ²éѯ¹ý³ÌÖÐ×齨»¹»á×Ô¶¯²éѯÁËcount()·ûºÏÌõ¼þµÄ¼Ç¼Êý£¬ËùÒÔÔÚ´óÊý¾ÝµÄÇé¿öÏ£¬Ð§Âʲ»»áºÜºÃ¡£
Èç¹ûÄãÉèÖÃ×齨µÄÊý¾Ý¿âÊÇsql server2005Ôò²»»áÈ¥²éѯ count£¬¶øÊÇÖ±½Óͨ¹ýrow_number()À´²éѯ£¬À´»ñµÃ¸üºÃµÄЧÂÊ¡£(oracleÔòÊÇrownumʵÏÖ) ÏÂÃæÀ´sql server2005Àý×Ó£º
DbSession.Default.From
.OrderBy(Products._.UnitPrice.Desc) //.Where(Products._.CategoryID == 2) .ToList();
´úÂ뻹ÊÇÉÏÃæµÄÀý×ÓµÄ,Éú³ÉµÄsql£º
Text:
SELECT * FROM
( SELECT *,row_number() over( ORDER BY [Products].[UnitPrice] DESC) AS tmp__rowid FROM [Products] ) AS tmp_table
WHERE (tmp__rowid BETWEEN 11 AND 20)
·½·¨µÄµ÷Óû¹ÊÇÒ»ÑùµÄ£¬ËùÒÔÈç¹ûfromµÄ²ÎÊýstartIndexµÈÓÚ1,»¹ÊÇÓÅÏÈʹÓÃtop,²¢Ã»ÓÐʹÓÃrow_numer()¡£
µ±È»Äã¾õµÃ·ÖÒ³»¹²»¹»ÀíÏ룬¿ÉÒÔ×Ô¼ºÐ´sql»òÕß´æ´¢¹ý³Ì¡£
Êý¾Ý¿â×é¼þ Hxj.Data £¨¶þʮһ£© £¨ToScalar
¾¹ýÖÜÄ©µÄͨÏü£¬·¢²¼ÁË×é¼þ1.0°æ±¾¡£
¶Ô×é¼þ½øÐÐÁËÀ©Õ¹£¬×î´óµÄÐ޸ľÍÊÇÔö¼Ó»º´æ²éѯ£¬ÒÔ»ñµÃ¸üºÃµÄÐÔÄÜ¡£ ±¾½ÚÏȽ²Ò»Ð©Ð¡µÄÀ©Õ¹Ð޸ġ£
֮ǰ°æ±¾ToScalar()Ö»ÊÇ·µ»Øobject¡£
ÏÖÔÚÔö¼ÓÁËToScalar
DbSession.Default.From
43
ÕâÑù¾Í·µ»ØÀàÐÍΪintÀàÐÍ£¬Ãâȥת»»µÄ´úÂë¡£
µ±²éѯ³öÀ´µÄֵΪnull »òÕßDbNull ,¸Ãת»»Ôò·µ»Ødefault(TResult) ¡£ ËæÖ®À©Õ¹ÁËDbSessionµÄ·½·¨£º
Sum
DbSession.Default.Avg
ÕâÑù·µ»Ø»ØÀ´µÄ¾ÍÊÇdecimal ÀàÐ͵ÄÊý¾Ý¡£
DbSession»¹Ôö¼ÓÁËExists
Êý¾Ý¿â×é¼þ Hxj.Data £¨¶þÊ®¶þ£© £¨»º´æ£©
Ê×ÏÈÎÒÊÇ×öweb¿ª·¢µÄ£¬ËùÒԺܶà»áÆ«ÏòwebµÄ£¬×é¼þʹÓõĻº´æÊÇSystem.Web.HttpRuntime.Cache¡£ ×é¼þÔÚĬÈÏÇé¿öÏÂÊǹرջº´æµÄ¡£ ËùÒÔÒª¿ªÆô»º´æ²éѯҪ×öÒ»ÏÂÅäÖᣠÏÈ¿´Ò»ÏÂÀý×ÓÅäÖãº
44

