前言
加入博客园很久很久了,中间写过一些东西,都没有发出来,很多草稿都删除了,不知道不觉距离上次写的那篇MVC的文章已经一年多了..
很早都想把自己的东西分享给大家,但是一是自己太懒,二是总觉得自己写得不够好,现在也算是鞭笞一下自己来写写博客,方便他人也提升一下自己。
注意:本人的东西都没有经过详细的压力测试及其它测试,仅仅只是自己写来自己一直在使用,如果对你有一点点帮助我的目的也就达到了,如果是大神则很抱歉浪费了您的时间。
那么进入正题吧!
一,项目开源地址
1,数据访问Never.Net: https://coding.net/u/jiyang/p/Never.Net/git
2,DoNet学习项目Learn.net: https://coding.net/u/jiyang/p/Learn.net/git
3,通用采集器NCollector: https://coding.net/u/jiyang/p/NCollector/git
暂时只整理了3个项目,都不完善甚至有些粗糙,我也会有时间就去升级一下,只希望对大家有那么一点点帮助
二,Never.NET介绍及使用
Never.net是我花了最多时间去维护的第一个数据库访问项目,从最早的用字典生成插入及修改语句的helper到后面解析lamda表达式(到现在都还很弱),现在还使用在一些小项目中,也算有些历史了,它是一个超自由的数据访问库,有多自由呢?先看几个例子吧!
从最基本的添加,修改,删除,查询说起:
1,添加数据
1 // 默认加载配置文件的第一个连接串配置 2 using (DbContext db = new DbContext()) 3 { 4 context.Debug = true ; // 打开调试 5 context.LogOutputAction = msg => // 设置日志输出方式为控制台输出 6 { 7 Console.WriteLine(msg.ToString()); 8 }; 9 // 语句插入 10 db.FromSql( " insert into demo(id,item)values(@id,@item) " ) 11 .AddParameter( " @id " , 1 ) 12 .AddParameter( " @item " , " adfadsf " ) 13 .ExecuteNonQuery(); 14 // 设置插入 15 db.Insert( " demo " ) 16 .Set( " id " , 1 ) // 自动使用参数化 17 .Set( " item " , " adsfa " ) 18 .Save(); // SaveReturnIdentity返回标识列 19 // orm插入 20 db.Insert( new Demo() { Id = 1 , Item = " adsfasd " }).Save(); 21 // 混合使用 22 db.Insert<Demo> () 23 .Set(t => t.Id, 1 ) 24 .Set( " item " , " item1 " ) 25 .Save(); 26 // 事务 27 db.BeginTransaction(); 28 var i = 0 ; 29 i += db.Insert( new Demo() { Item = " 1 " }).Save(); 30 i += db.Insert( new Demo() { Item = " 2 " }).Save(); 31 i += db.Insert( new Demo() { Item = " 3 " }).Save(); 32 i += db.Insert( new Demo() { Item = " 4 " }).Save(); 33 i += db.Insert( new Demo() { Item = " 5 " }).Save(); 34 var b = db.Commit(); 35 }
2,修改数据
1 // 语句 2 db.FromSql( " update item set item=@item " ) 3 .AddParameter( " @item " , " updated " ) 4 .ExecuteNonQuery(); 5 // 设置 6 db.Update( " demo " ) 7 .Set( " id " , 1 ) // 自动使用参数化 8 .Set( " item " , " adsfa " ) 9 .Save(); // SaveReturnIdentity返回标识列 10 // orm 11 db.Update( new Demo() { Id = 1 , Item = " adsfasd " }).Save(); 12 // 混合使用 13 db.Update<Demo> () 14 .Set(t => t.Id, 1 ) 15 .Set( " item " , " item1 " ) 16 .Save(); 17 // 事务 18 db.BeginTransaction(); 19 var i = 0 ; 20 i += db.Update( new Demo() { Item = " 1 " }).Save(); 21 i += db.Update( new Demo() { Item = " 2 " }).Save(); 22 i += db.Update( new Demo() { Item = " 3 " }).Save(); 23 i += db.Update( new Demo() { Item = " 4 " }).Save(); 24 i += db.Update( new Demo() { Item = " 5 " }).Save(); 25 var b = db.Commit();
3,删除
1 db.FromSql( " delete from demo where id=@id " ) 2 .AddParameter( " @id " , 1 ) 3 .ExecuteNonQuery(); 4 db.Delete( " demo " ).Where( " id={0} " , 1 ) 5 .Where( " item=@item " ) 6 .AddParameter( " @item " , " fadf " ) 7 .Save(); 8 db.Delete<Demo>(t => t.Id == 1 ) 9 .Where( " id=2 " ) 10 .Save();
4,查询
1 db.From( " demo " ) 2 .Where( " id={0} " , 1 ) 3 .Take( 10 ) 4 .Columns( " id,item " ) 5 .OrderBy( " id desc " ) 6 .ToList<Demo>(); // ToDataReader(),ToDataSet(),其它 7 db.From<Demo> () 8 .Where(t=>t.Id== 1 ) 9 .Where( " id=1 " ) 10 .OrderByDesc(t=> t.Id) 11 .Columns(t=> new {t.Id,t.Item}) 12 .ToList(); 13 // 分页 14 var selecter = db.From<Demo>().Where(t=>t.Id== 1 ); 15 var recordCout = selecter.Count(); 16 var list = selecter.Page( 1 , 10 ).ToList();
基本的操作在上面的例子中有写出,但是更多的功能还期待使用者去发现,Never.Data并未使用兼容所有数据库,但是可以很方便的写一个不同的语句生成类继承DbDriver来实现不同的数据库操作功能,Never.Net基本介绍到此结束.
其它项目简要介绍:
Learn.Net:这个东西现在还是个坑,只是为了把学习的东西放到一个项目中,以便需要的时间查询和查看demo,同时也可以把一些做过的功能集合到一起,以后换工作或者在其它地方不用携带你的U盘
NCollector:是一个基于jumony实现的网站采集器项目,项目本身带有一个测试的access数据库及采集工具和采集服务(实现自动采集功能),框架已搭好并实现了一些视频采集器,扩展超方便只需要实现采集基类实现一个列表页的采集功能就可以了,工具服务只需要配置一下数据库连接就可以直接在项目中使用
另外,近期在整个一个mvc4+never.net+j-ui的项目,不过最近老婆要生宝宝,可能会晚一些,到时也会分享给大家。
最后:以上所有项目,有兴趣一起开发的可以给我发邮件:crazytester@qq.com