• SubSnoic 框架入门到提高(3)全程记录


    时隔上篇的2已经好久了,好多个人原因导致自己好久没写了,抱歉

    还是接着上一篇写吧

    首先我们在上次的那个SubSonicTestDB 数据库上执行下面Sql,给学生表添加一个入学日期列 

     alter table Student add EnterSchoolDate datetime default getdate() 

    额外技巧: 教大家一个快速输入时间的方法,开始这样,我用搜狗输入法

     例如

    ,在输入中 ,输入sj得到

     

     然后按3,就可以输入当前时间了,如此添加一些测试数据。

     开始:

     3.1时间段查询(BETWEEN_AND 方法)

          IDataReader dr = new Query(Tables.Student).BETWEEN_AND(Student.Columns.EnterSchoolDate, Convert.ToDateTime("2012-09-01 00:00:00"), DateTime.Now.AddDays(30)).ExecuteReader();

                while (dr.Read())
                {
                    Console.WriteLine(dr["StudentId"] + "\t" + dr["StudentName"] + "\t" + dr["StudentHobby"]);
                }

     其他方式还有很多

    3.2添加一个条件(AddWhere)

           IDataReader dr = new Query(Tables.Student).BETWEEN_AND(Student.Columns.EnterSchoolDate, Convert.ToDateTime("2012-09-01 00:00:00"), DateTime.Now.AddDays(30)).AddWhere(Student.Columns.StudentHobby,"中国象棋").ExecuteReader();

    只是在3.1里面添加了一个是爱好是中国象棋的条件

    3.3常用取前几条数据的方法

      3.3.1 Top

                   Query query = new Query("Student");

                query.Top = "8";
                query.SelectList =Student.Columns.StudentID+","+Student.Columns.StudentName + "," + Student.StudentHobbyColumn.ToString();
                query.OrderBy = OrderBy.Desc(Student.Columns.StudentID);

                IDataReader dr = Student.FetchByQuery(query); 

     当然那个Query你也可以直接写 Query query = new Query("Student").SetTop("10").ORDER_BY("StudentID desc"); 

     可能你会对Query这么麻烦感到烦恼,那我把上期某个例子放一下,不是Query类型的只能FetchByQuery这么局限,感受一下

                DataSet sts = new Query(Tables.Student).WHERE("StudentHobby""中国象棋").ORDER_BY("StudentId asc").ExecuteDataSet();
                foreach (DataRow item in sts.Tables[0].Rows)
                {
                    Console.WriteLine(item["StudentId"] + "\t" + item["StudentName"] + "\t" + item["StudentHobby"]);} 

       

     3.3.2 Query类型自带的 PageIndex,PageSize属性,我的理解是将结果分页

                  Query query = new Query("Student");

    复制代码
                query.PageIndex = 1;
                query.PageSize = 8;
                IDataReader dr = Student.FetchByQuery(query);
                Console.WriteLine("第一页");
                while (dr.Read())
                {
                    Console.WriteLine(dr["StudentId"] + "\t" + dr["StudentName"] + "\t" + dr["StudentHobby"]);
                }

                Console.WriteLine("第二页");
                query.PageIndex = 2;
                dr= Student.FetchByQuery(query);
                while (dr.Read())
                {
                    Console.WriteLine(dr["StudentId"] + "\t" + dr["StudentName"] + "\t" + dr["StudentHobby"]);
                }
    复制代码

     效果:

    使用SQL Server Profiler跟踪可以查看他在内部怎么执行的

     这里只列出一点点,自己有兴趣可以看看

    这个工具在sqlserver2008 的菜单栏 --”工具“--SQL SERVER Profiler,运行,直接下一步即可,存储过程也可以跟踪

     3.3.3其他分页(Paged方法)

    ①查出张老师名下的学生,返回一个List类型的,如果你想返回更多的信息,建议用其他类型,例如DataSet 

       List<Student> students = new Select(Student.StudentIDColumn,Student.StudentNameColumn,Student.StudentHobbyColumn,Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn,Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo("张老师").Paged(1,3).ExecuteTypedList<Student>();
                foreach (Student item in students)
                {
                    Console.WriteLine("{0}   {1}  {2}",item.StudentID,item.StudentName,item.StudentHobby); }

                 

     4.返回一个JOSN(ExecuteJSON )

                 string studentsJOSN= new Select(Student.StudentIDColumn, Student.StudentNameColumn, Student.StudentHobbyColumn, Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn, Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo("张老师").Paged(13).ExecuteJSON("stu","STUDENT");

    效果图

     

    5.返回一个XML(ExecuteXML)

                 string studentsXML = new Select(Student.StudentIDColumn, Student.StudentNameColumn, Student.StudentHobbyColumn, Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn, Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo("张老师").Paged(13).ExecuteXML("Students","Student");

    效果图如下: 

     

    6.添加一些条件

      6.1 模糊查询

          模糊查询,查出爱好含姓小的人的

           DataTable dt = new Select().From<Student>().WhereExpression("StudentName").StartsWith("").ExecuteDataSet().Tables[0];

                foreach (DataRow item in dt.Rows)
                {
                    Console.WriteLine(item[0] + "\t" + item[1] + "\t" + item[2]);}

           还有其他方法,例如EndsWith,Expression,AndExpression等

      6.2范围查询,IsBetweenAnd这个跟3.1的BETWEEN_AND不一样,BETWEEN_AND必须是datetime范围内的,IsBetweenAnd是两个对象,包括时间

            DataTable dt = new Select().From<Student>().WhereExpression("StudentID").IsBetweenAnd(5,10).ExecuteDataSet().Tables[0]; 

    暂时写到这里 ,不知道你们有没有学到什么...

     
    分类: 框架学习

    框架学习

     
    摘要: 本篇主要是一些琐碎的东西了,前面3篇都是关于查询的这篇讲一些没水准的吧4.1 Update 4.1.1 把ID为1的学生的爱好改成 打游戏 Studentini=Student.FetchByID(1);Console.WriteLine("原来爱好是{0}",ini.StudentHobby);inti=newUpdate(Tables.Student).Set(Student.StudentHobbyColumn).EqualTo("打游戏").Where(Student.StudentIDColumn).IsEqualTo(1).Execute()阅读全文
    posted @ 2012-09-19 17:04 茗洋芳竹 阅读(8) | 评论 (0) 编辑
    摘要: 时隔上篇的2已经好久了,好多个人原因导致自己好久没写了,抱歉还是接着上一篇写吧首先我们在上次的那个SubSonicTestDB数据库上执行下面Sql,给学生表添加一个入学日期列altertableStudentaddEnterSchoolDatedatetimedefaultgetdate()额外技巧: 教大家一个快速输入时间的方法,开始这样,我用搜狗输入法例如,在输入中 ,输入sj得到然后按3,就可以输入当前时间了,如此添加一些测试数据。开始:3.1时间段查询(BETWEEN_AND 方法)IDataReaderdr=newQuery(Tables.Student).BETWEEN_AND(阅读全文
    posted @ 2012-09-19 15:52 茗洋芳竹 阅读(315) | 评论 (2) 编辑
    摘要: 上篇说到了 subsonic 的配置与然后根据数据库生成实体操作类下面我们继续学习,他的逻辑处理语句为了方便演示,我就不建什么框架了,直接UI层用控制台了,还请见谅右键上次的那个项目 ,添加 控制台应用程序:SubSonicUI然后把SubSonicDAL层下的app.config文件复制到SubSonicUI 程序集下,注意你添加的控制台默认使用的framework是 .Net FrameWork4 Client Profile,将它改成.Net FrameWork4如图:然后添加 SubSonic.dll 和 System.configuration.dll 类库的引用,还有Student阅读全文
    posted @ 2012-05-22 17:37 茗洋芳竹 阅读(922) | 评论 (1) 编辑
    摘要: 关于这个框架的介绍我就不说了,网上很多,我只教基本用法,基本逻辑语句写法以sqlserver2008+SubSonic 2.2+VS2010为了让学习者能顺利学习,我已将subsonic2.2上传到了csdn上了 ,下载地址:http://download.csdn.net/download/yangyanghaoran/4318138为了防止恶意转载:本文地址http://www.cnblogs.com/Fresh-Air/archive/2012/05/21/2511578.html一:现在D盘建一个文件夹:SubsonicTest, 在该目录下放置你需要的文件SubSonic2.2.ZI阅读全文
    posted @ 2012-05-21 15:44 茗洋芳竹 阅读(1329) | 评论 (7) 编辑
  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2694273.html
Copyright © 2020-2023  润新知