前言
加入博客園很久很久了,中間寫過一些東西,都沒有發(fā)出來,很多草稿都刪除了,不知道不覺距離上次寫的那篇MVC的文章已經(jīng)一年多了..
很早都想把自己的東西分享給大家,但是一是自己太懶,二是總覺得自己寫得不夠好,現(xiàn)在也算是鞭笞一下自己來寫寫博客,方便他人也提升一下自己。
注意:本人的東西都沒有經(jīng)過詳細(xì)的壓力測試及其它測試,僅僅只是自己寫來自己一直在使用,如果對(duì)你有一點(diǎn)點(diǎn)幫助我的目的也就達(dá)到了,如果是大神則很抱歉浪費(fèi)了您的時(shí)間。
那么進(jìn)入正題吧!
一,項(xiàng)目開源地址
1,數(shù)據(jù)訪問Never.Net: https://coding.net/u/jiyang/p/Never.Net/git
2,DoNet學(xué)習(xí)項(xiàng)目Learn.net: https://coding.net/u/jiyang/p/Learn.net/git
3,通用采集器NCollector: https://coding.net/u/jiyang/p/NCollector/git
暫時(shí)只整理了3個(gè)項(xiàng)目,都不完善甚至有些粗糙,我也會(huì)有時(shí)間就去升級(jí)一下,只希望對(duì)大家有那么一點(diǎn)點(diǎn)幫助
二,Never.NET介紹及使用
Never.net是我花了最多時(shí)間去維護(hù)的第一個(gè)數(shù)據(jù)庫訪問項(xiàng)目,從最早的用字典生成插入及修改語句的helper到后面解析lamda表達(dá)式(到現(xiàn)在都還很弱),現(xiàn)在還使用在一些小項(xiàng)目中,也算有些歷史了,它是一個(gè)超自由的數(shù)據(jù)訪問庫,有多自由呢?先看幾個(gè)例子吧!
從最基本的添加,修改,刪除,查詢說起:
1,添加數(shù)據(jù)
1 // 默認(rèn)加載配置文件的第一個(gè)連接串配置 2 using (DbContext db = new DbContext()) 3 { 4 context.Debug = true ; // 打開調(diào)試 5 context.LogOutputAction = msg => // 設(shè)置日志輸出方式為控制臺(tái)輸出 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 // 設(shè)置插入 15 db.Insert( " demo " ) 16 .Set( " id " , 1 ) // 自動(dòng)使用參數(shù)化 17 .Set( " item " , " adsfa " ) 18 .Save(); // SaveReturnIdentity返回標(biāo)識(shí)列 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 // 事務(wù) 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,修改數(shù)據(jù)
1 // 語句 2 db.FromSql( " update item set item=@item " ) 3 .AddParameter( " @item " , " updated " ) 4 .ExecuteNonQuery(); 5 // 設(shè)置 6 db.Update( " demo " ) 7 .Set( " id " , 1 ) // 自動(dòng)使用參數(shù)化 8 .Set( " item " , " adsfa " ) 9 .Save(); // SaveReturnIdentity返回標(biāo)識(shí)列 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 // 事務(wù) 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();
基本的操作在上面的例子中有寫出,但是更多的功能還期待使用者去發(fā)現(xiàn),Never.Data并未使用兼容所有數(shù)據(jù)庫,但是可以很方便的寫一個(gè)不同的語句生成類繼承DbDriver來實(shí)現(xiàn)不同的數(shù)據(jù)庫操作功能,Never.Net基本介紹到此結(jié)束.
其它項(xiàng)目簡要介紹:
Learn.Net:這個(gè)東西現(xiàn)在還是個(gè)坑,只是為了把學(xué)習(xí)的東西放到一個(gè)項(xiàng)目中,以便需要的時(shí)間查詢和查看demo,同時(shí)也可以把一些做過的功能集合到一起,以后換工作或者在其它地方不用攜帶你的U盤
NCollector:是一個(gè)基于jumony實(shí)現(xiàn)的網(wǎng)站采集器項(xiàng)目,項(xiàng)目本身帶有一個(gè)測試的access數(shù)據(jù)庫及采集工具和采集服務(wù)(實(shí)現(xiàn)自動(dòng)采集功能),框架已搭好并實(shí)現(xiàn)了一些視頻采集器,擴(kuò)展超方便只需要實(shí)現(xiàn)采集基類實(shí)現(xiàn)一個(gè)列表頁的采集功能就可以了,工具服務(wù)只需要配置一下數(shù)據(jù)庫連接就可以直接在項(xiàng)目中使用
另外,近期在整個(gè)一個(gè)mvc4+never.net+j-ui的項(xiàng)目,不過最近老婆要生寶寶,可能會(huì)晚一些,到時(shí)也會(huì)分享給大家。
最后:以上所有項(xiàng)目,有興趣一起開發(fā)的可以給我發(fā)郵件:crazytester@qq.com
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
