开源数据访问组件Smark.Data 1.7新增功能
借助于擴展方法的功能,這一版本的改進可以讓數(shù)據(jù)庫操作變得更簡單方便,在數(shù)據(jù)庫操作相關會給你一種全新的體驗.主要改進有以下幾點:
- 條件表達式可以直接和string進行組合,從而更靈活地創(chuàng)建復雜的查詢條件
- 擴展Load_方法,可以直接在值對象的基礎上獲取相關ID數(shù)據(jù)對象
- 擴展一系的查詢方法,可直接在string的sql上進行數(shù)據(jù)操作,包括查詢獲取查詢對象數(shù)據(jù).在操作過程完全不需要借助于其他對象來處理.
- 擴展可以直接在存儲過程對象進行執(zhí)行操作
對象獲取和保存
var emp = 3.Load_<Employee>();emp.Notes += "_test";emp.Save_();以上就是簡單地根據(jù)ID值獲取對象,修改并保存.由于擴展方法容易導致和其他方法沖突,所以在方法添加了_以便區(qū)分.
SQL執(zhí)行
在原來的版本時處理一些SQL執(zhí)行,必須借助于一些對象.就是必須創(chuàng)建一個SQL執(zhí)行對象來處理SQL.但在1.7版中就不再需要這樣做,直接在一個SQL的String基礎上就能執(zhí)行操作.
"delete * from employees".Execute();以上是簡單地執(zhí)行一個delete的sql語,當然也可以執(zhí)行一個查詢并返回一個對象列表
foreach (var item in "select * from employees".List<Employee>()){Console.WriteLine(item.FirstName);}查詢需要設置相關參數(shù)
foreach (var order in "select * from orders where employeeid=@p1".Parameter("p1", 3).List<Order>()){Console.WriteLine("orderid:{0}\t orderdate:{1}", order.OrderID, order.OrderDate);}存儲過程執(zhí)行
CustOrderHist coh = new CustOrderHist();coh.CustomerID = "ALFKI";coh.ExecProc_();只需要創(chuàng)建一個存儲過程描述對象,設置好相關參數(shù)值就可以直接執(zhí)行處理,當然也可以執(zhí)行并返回一個查詢結(jié)果.
CustOrderHist coh = new CustOrderHist();coh.CustomerID = "ALFKI";foreach (var data in coh.ExecProcToObjects_<CustOrderHistData>()){Console.WriteLine("{0}\t{1}", data.ProductName, data.Total);}對象條件和string描述的條件整合
在原有的條件表達式中處理復雜的SQL查詢變得比較麻煩,實際情況下一些復雜的條件的確沒有直接SQL來得直觀,因此新版條件表達式可以直接和string描述的條件整合并產(chǎn)生新的表達式對象進行數(shù)據(jù)操作.
Expression exp = new Expression();exp &= Order.orderDate >= "1996-7-1";exp &= " employeeid in (select employeeid from employees where region=@p1)".Add("p1", "WA");foreach (var order in exp.List<Order>()){Console.WriteLine("orderid:{0}\t orderdate:{1}", order.OrderID, order.OrderDate);}總結(jié)
以上幾種操作的簡化相信可以讓你操作數(shù)據(jù)庫變得更輕松和靈活.
組件官網(wǎng):http://www.ikende.com/SmarkData.aspx
源代碼網(wǎng)站:http://smark.codeplex.com/
總結(jié)
以上是生活随笔為你收集整理的开源数据访问组件Smark.Data 1.7新增功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改oracle归档目录和大小
- 下一篇: DNS-实验6_queryperf和dn