前言
加入博客園很久很久了,中間寫過一些東西,都沒有發出來,很多草稿都刪除了,不知道不覺距離上次寫的那篇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