上次说了下DMSFrame的一些查询方式,之前也有好多朋友问了下这个ORM与EF有什么样的区别。

要论区别,我自己也总结了几点。如果有其它朋友知道的,可以回复补充下。

1.不需要编辑的时候需要再次查询数据库,可以直接根据条件去更新。

2.支持分布式数据库,可以在实体上定义数据库,甚至可以在代码上定义数据库。这点好像EF是做不到的

3.支持多种数据库,只需要修改配置就好。

继续我们开发之旅吧。。

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

解析如下:

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字段,

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!!

相信这里你也就明白为什么分页查询要排序字段了吧。。

值得说明的事:查询的返回结果可以这几种, 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

DMSFrame 之简单用法(二)的更多相关文章

  1. DMSFrame 之简单用法(一)

    1.DMSFrame是一个完整的ORM框架,框架相对来说也比成熟了.使用上有些地方还是比较方便的.DLL文件大约300K左右,但却可以支持各种方式的查询,完全的LINQ化的方式书写代码,更有利于维护. ...

  2. ios初识UITableView及简单用法二(模型数据)

    // // ViewController.m // ZQRTableViewTest // // Created by zzqqrr on 17/8/24. // Copyright (c) 2017 ...

  3. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  4. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  5. TransactionScope简单用法

    记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...

  6. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

  7. SQL*Plus break与compute的简单用法

    SQL*Plus break与compute的简单用法在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现.这个两个命令简单易用,可满足日常需求,其实质也相当于 ...

  8. Knockout简单用法

    Knockout简单用法 在最近做的一个项目中,页面数据全部通过js ajax调用webapi接口获取,也就是说页面的数据全部使用javascript脚本填充,这就想到了使用一个MVVM模式的js框架 ...

  9. JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法

    一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Be ...

随机推荐

  1. Mac上搭建直播服务器Nginx+rtmp

    简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...

  2. js函数的调用问题

    1.js函数的调用方式有三种.请问以下“二”处的几行代码有什么猫腻? //一 事件调用 btn.onclick=fn; //二 直接调用(window调用) fn(); //自上而下解析到这一行的时候 ...

  3. Atitit.java eval功能的实现  Compiler API

    Atitit.java eval功能的实现  Compiler API 输出echo2 输出目录配置2 针对编译器,JDK 设计了两个接口,分别是 JavaCompiler 和JavaCompiler ...

  4. Atitit.常用的gc算法

    Atitit.常用的gc算法 1.1. 记-清除算法1 1.2. 复制算法1 1.3. 标记-整理算法2 1.4. 分代收集算法2 1.1. 记-清除算法 最基础的收集算法,算法分为标记和清除两个阶段 ...

  5. paip.复制文件 文件操作 api的设计uapi java python php 最佳实践

    paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi   copy() =====java的无,要自己写... ====php   copy ...

  6. webpack学习之入门实例

    webpack:前端打包神器,目前活跃度甚至超过了gulp.grunt等,使用webpack打包,简单快速,下面记录下webpack环境搭建以及基本使用: 1.首先新建一个空白目录,用于项目根目录,比 ...

  7. jQuery实现左移右移

    <html> <head> <meta charset="utf-8"> <title>完成左移右移</title> & ...

  8. 01、手把手Android攻城入门

    1.Android开发环境搭建: Eclipse Java EE IDE + ADT-23.0.6 + android-sdk-21-with-sdk-manager-r23.0.2 (安卓5.0)+ ...

  9. React Native入门遇到的一些问题

    本文示例参考自<React Native第一课> React Native官方文档中文版(含最新Android内容) 这里只大概记录下我的操作步骤和遇到的问题,一定要牢记下面这条: 如果你 ...

  10. 10条现代EQ技术基础贴士(转)

    前言: 无论是追求复古的模拟音色还是高精度的透明音质,现代电脑音乐制作中层出不断的新EQ插件以其超强的频率塑形和个性化功能为音色的润色和重塑提供了无限可能. 虽然EQ并不是音频工程工具中最复杂的,但是 ...