zoukankan      html  css  js  c++  java
  • DMSFrame 之简单用法(二)

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

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

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

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

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

    继续我们开发之旅吧。。

     var user = DMS.Create<Adm_User>()
                    .OrderBy(q => q.OrderBy(q.UserID))
                    .Pager(1, 10);
                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

  • 相关阅读:
    几种常见的软件架构
    路由事件
    PathAnimation
    String、Brush、Color 相互转换
    Sql 使用备份还是使用脚本
    WPF 路由事件
    WPF之复杂形状控件
    WPF之鼠标滑动切换图片
    WPF之基于路径的动画
    WPF之自定义控件
  • 原文地址:https://www.cnblogs.com/kingkoo/p/4533096.html
Copyright © 2011-2022 走看看