DMSFrame 之簡單用法(二)

上次說了下DMSFrame的一些查詢方式,以前也有好多朋友問了下這個ORM與EF有什麼樣的區別。html

要論區別,我本身也總結了幾點。若是有其它朋友知道的,能夠回覆補充下。web

1.不須要編輯的時候須要再次查詢數據庫,能夠直接根據條件去更新。數據庫

2.支持分佈式數據庫,能夠在實體上定義數據庫,甚至能夠在代碼上定義數據庫。這點好像EF是作不到的分佈式

3.支持多種數據庫,只須要修改配置就好。spa

 

繼續咱們開發之旅吧。。code

 

 var user = DMS.Create<Adm_User>()
                .OrderBy(q => q.OrderBy(q.UserID))
                .Pager(1, 10);
            Console.WriteLine(user.GetResultSql());

解析以下:htm

SELECT TOP 10 [t0].[UserID],[t0].[UserName],[t0].[TrueName],[t0].[UserPwd],[t0].[DeptID],[t0].[DeptName],[t0].[UserCode],[t0].[CompanyEmail],[t0].[MobileNum],[t0].[StatusFlag],[t0].[LastLoginTime],[t0].[LoginTimes],[t0].[LastLoginIp],[t0].[ResetPwdFlag],[t0].[CreateTime],[t0].[CreateUser],[t0].[DeleteFlag],[t0].[DeleteTime],[t0].[DeleteUser],[t0].[UpdateUser],[t0].[UpdateTime],[t0].[Remark]
 FROM [Adm_User]  AS  [t0] WITH(NOLOCK)  
 ORDER BY  [t0].[UserID]

明眼一看就知道是分頁查詢,值得注意的是分佈查詢是必需要有OrderBy字段,blog

OrderBy(q => q.OrderBy(q.UserID)),注意裏面還有一個OrderBy,這也是和EF不一樣的地方,再看看第二頁的狀況。

var user = DMS.Create<Adm_User>()
                .OrderBy(q => q.OrderBy(q.UserID.Desc(), q.CreateTime))
                .Pager(2, 10)
                .Select(q => q.Columns(q.UserID, q.UserCode));
            Console.WriteLine(user.GetResultSql());

解析以下:排序

SELECT [UserID],[UserCode] FROM(SELECT  TOP 20 ROW_NUMBER() OVER(ORDER BY  [t0].[UserID] DESC ,[t0].[CreateTime]) RN,[t0].[UserID],[t0].[UserCode] 
FROM [Adm_User]  AS  [t0] WITH(NOLOCK)) [t0] 
WHERE RN>10

第二頁查詢的方式會自動加排序字段進行分頁查詢的。在查詢的時候也會有其它業務需求,只查詢咱們須要的東西。怎麼樣,是否是感受原來查詢也能夠這麼so easy!!ip

相信這裏你也就明白爲何分頁查詢要排序字段了吧。。

值得說明的事:查詢的返回結果能夠這幾種, ToResult() | 返回DataTable結果;ToList() | 返回類列表結果;ToConditionResult(1) | 返回分頁結果(帶總項數);

同時還能夠返回任意的類列表結果,ToList<T>(); T 能夠是任意的class,規則就是與數據庫查詢出來的字段名稱要一致,默認是忽略大小寫的,若是須要區分,能夠ToList裏面加上參數信息

 

var user = DMS.Create<Adm_User>()
               .GroupBy(q => q.GroupBy(q.UserID, q.UserName))
               .Select(q => new
               {
                   UserID = q.UserID,
                   UserName = q.UserName,
                   CountX = q.LoginTimes.COUNT(),
               });
            Console.WriteLine(user.GetResultSql());

 

 

 相關下載:http://files.cnblogs.com/files/kingkoo/DMSFrameRights.zip 此版本爲之前的一個版本,最新的版本請加羣問羣主吧

新上傳DMSFrame版本文件:http://files.cnblogs.com/files/kingkoo/DMSFrame_Secure20150606.7z

相關文章
相關標籤/搜索