JacksonQuery 一句完成DAL操作

JackonQuery 1.02 beta1

前言:

     继前文JacksonQuery在前一版本的速度和设计的单向性做了重大调整.
     对前文的可以代替DAL的失言表示道歉.
     比EntityFramwork,更灵活,清晰,简单易用.(就是更SB)
     感谢jvk(blog名)对我介绍Subsonic,这东西实在强大,不过复杂了点.我迟点再细细研究.
     比Dataset性能好上好几陪.
     比SqlHelper更简单,易用,灵活度若减.速度在多于3至4个参数JacksonQuery性能更优.
     Linq更没得比了~
     详细说明后继

实例:

     A.数据库设计(自己写)
     
    
 
     B.实体类(自己写)

Code


     C.写连接数据库配置(自己写)

Code

      D.开始操作数据库(注意没有DAL层)

 1            JacksonQuery jq = Program.TestDB;
 2
 3            Guid ShopID = new Guid("656b55d5-c705-4465-8a64-66e8180bca00");
 4            DateTime LogDate = DateTime.Now;
 5
 6            MsgInf msgTarget = new MsgInf();
 7            msgTarget.LogMsg = "test8";
 8            msgTarget.LogDate = DateTime.Now;
 9            msgTarget.LogState = LogStateCodeType.test3;
10            msgTarget.ShopID = ShopID;
11            MsgInf msgTarget2 = new MsgInf();
12            msgTarget2.LogMsg = "test8";
13            msgTarget2.LogDate = DateTime.Now;
14            msgTarget2.LogState = LogStateCodeType.test3;
15            msgTarget2.ShopID = ShopID;
16            List<MsgInf> msgsTarget = new List<MsgInf>(2);
17            msgsTarget.Add(msgTarget);
18            msgsTarget.Add(msgTarget2);
19
20
21            ////插入,更新 ok
22            int insertRut = jq.Execute("InsertLog", ShopID, "test4", LogDate, 3);
23            int insertRut2 = jq.ExecuteI<MsgInf>("LogAdd2", msgTarget);
24            int insertRut3 = jq.Executes<MsgInf>("InsertLog", msgsTarget, true, JLStudio.IsolationLevel.Unspecified);
25
26
27            ////////返回单值//ok
28            int LogCountRut = (int)jq.GetReturn("CountLog(ShopID,LogDate)", ShopID, LogDate);//单输出列可忽略不写
29            int LogCountRut2 = (int)jq.GetReturn("CountLog(CountL,LogDate,ShopID)"null, LogDate, Guid.Empty);//输入位置被忽略
30
31
32            //////返回list ok
33            List<MsgInf> msgs1 = jq.GetList<MsgInf>("GetTodayLogs");
34            List<MsgInf> msgs2 = jq.GetList<MsgInf>("GetLogs", ShopID, LogDate);
35            List<MsgInf> msgs3 = jq.GetList<MsgInf>("GetLogs(ShopID,LogDate)", ShopID, LogDate);
36            List<MsgInf> msgs4 = jq.GetList<MsgInf>("GetLogs(LogDate,ShopID)", LogDate, ShopID);
37
38
39            //////TSQL ok
40            List<MsgInf> msgs5 = jq.GetList<MsgInf>("select * from Tbl_Log2");
41            int insertRut4 = (int)jq.Execute("update Tbl_Log set LogState=1 where ShopID='{0}' and LogState is null", ShopID);
42            List<MsgInf> msgs6 = jq.GetList<MsgInf>("select * from Tbl_Log where ShopID='{0}'", ShopID);
43
44
45            ////事务
46            JacksonQuery jq2 = Program.TestDB;
47            try
48            {
49                jq2.BeginTran(JLStudio.IsolationLevel.ReadUncommitted);
50                int insertRut5 = jq2.ExecuteI<MsgInf>("InsertLog", msgTarget);
51                int insertRut6 = jq2.ExecuteI<MsgInf>("InsertLog", msgTarget);
52
53                //throw new Exception("just a test");
54                jq2.CommitTran();
55            }

56            catch
57            {
58                jq2.RollbackTran();
59                throw;
60            }


功能包括:
      一句完成所有单存储过程或TSQL操作.
      事务操作更简单易用(小于3骨句).
      可以对DA返回实体数据集,例如:List<MsgInfo>
      可以对DA输入参数为数据实体,例如MsgInfo ,或数据实体集 List<MsgInfo>,并提供事务操作.
      可输入任意参数(必须按照JQL JacksonQueryLanguage),并进行智能转换.
      输入参数可以有限定的的参入.以及类型智能转换.缺失预校.
      智能实体类到数据库元素的映射以及类型转换.(除了xml)
      支持简单单值返回.输出DataReader.支持TSQL.
      减小80%以上的DAL代码,以及80%以上的DAL代码维护.提高生产效率.
      
 
JacksonQuery类图:


作者:
TrackBack:http://www.cnblogs.com/JacksonLin/
Mail: linjiachenggz@qq.com

JacksonLin  广州尔诺科技有限公司 APIEngine架构师






 

posted @ 2008-05-12 22:49  JacksonLin  阅读(974)  评论(9)    收藏  举报