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

B.实体类(自己写)
C.写连接数据库配置(自己写)
D.开始操作数据库(注意没有DAL层)
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
////插入,更新 ok22
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
////////返回单值//ok28
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 ok33
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 ok40
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
try48
{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
catch57
{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架构师


}
浙公网安备 33010602011771号