【开源】自己用的数据访问组件及一些小东西,发扬博客园分享精神
前言
加入博客园很久很久了,中间写过一些东西,都没有发出来,很多草稿都删除了,不知道不觉距离上次写的那篇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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构