DMSFrame 之简单用法(二)
上次说了下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 之简单用法(二)的更多相关文章
- DMSFrame 之简单用法(一)
1.DMSFrame是一个完整的ORM框架,框架相对来说也比成熟了.使用上有些地方还是比较方便的.DLL文件大约300K左右,但却可以支持各种方式的查询,完全的LINQ化的方式书写代码,更有利于维护. ...
- ios初识UITableView及简单用法二(模型数据)
// // ViewController.m // ZQRTableViewTest // // Created by zzqqrr on 17/8/24. // Copyright (c) 2017 ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
- TransactionScope简单用法
记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...
- WPF之Treeview控件简单用法
TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...
- SQL*Plus break与compute的简单用法
SQL*Plus break与compute的简单用法在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现.这个两个命令简单易用,可满足日常需求,其实质也相当于 ...
- Knockout简单用法
Knockout简单用法 在最近做的一个项目中,页面数据全部通过js ajax调用webapi接口获取,也就是说页面的数据全部使用javascript脚本填充,这就想到了使用一个MVVM模式的js框架 ...
- JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法
一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Be ...
随机推荐
- [BTS] Faulting application name: BTSNTSvc.exe, version: 3.9.469.0, time stamp: 0x4c547e09
Log Name: ApplicationSource: Application ErrorDate: 8/22/2013 1:28:35 AMEvent ID: 1000Task Category: ...
- 通过实验窥探javascript的解析执行顺序
简介 javascript是一种解释型语言,它的执行是自上而下的.但是各浏览器对于[自上而下]的理解是有细微差别的,而代码的上下游也就是程序流对于程序正确运行又是至关重要的.所以我们有必要深入理解js ...
- 理解Javascript的异步等待
目前async / await特性并没有被添加到ES2016标准中,但不代表这些特性将来不会被加入到Javascript中.在我写这篇文章时,它已经到达第三版草案,并且正迅速的发展中.这些特性已经被I ...
- Atitit.基于dsl的methodinvoker
Atitit.基于dsl的methodinvoker V2 new dyn invoke V3 plan Meth chain Prj cms methd_invok.bat rem a sta ...
- atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为range----@Conditional(displayType = displayType.ra ...
- paip.hibernate list 返回位null的解决
paip.hibernate list 返回位null的解决 但是size是对的... 里面都是null... hb3.2版本...oracle11g =========原因:没主键 也许没主键,看累 ...
- Python错误、调试和测试
try: print('try...') r = 10 / int('a') print('result:', r) except ValueError as e: print('ValueError ...
- Android MonoGame坑记
1.Content 加载声音API错误: 2.TouchPanel.GetState()属于抢占式的,用一次后面不能继续使用,否则状态尚属第一次: 3.TouchPanel 坐标来自于硬件本身: 4. ...
- MFC如何使用静态MFC库
大部分MFC程序都是使用 在共享DLL中使用MFC ,但是VS每一个版本都需要一个 MFC运行库,实在是有点烦人. 所以我选择了使用静态MFC库,虽然文件会大一些,但是至少不麻烦了. VS这个做的不够 ...
- 写给程序员和UI--Android的切图标准
最近总是有人在问我,Android怎么切图啊,怎么适配啊,不只是Android同行,还有很多新手ui设计师. 于是我就写篇文章,根据我们平时的开发经验,简单的介绍一下吧. 如果UI设计师以1920*1 ...