最近有個想法,想不寫 sql 語句,做乙個類似於 orm 的東西,自己解析表示式樹,生成要執行的 sql 語句,最後再執行 sql 語句,返回相應結果。
常用的 sql 語句基本都有一定的模式,就是insert
/delete
/update
/select
,我把公用的部分給抽離出來,把查詢/更新/刪除條件和指定字段通過表示式樹來指出,解析傳入的表示式樹物件來獲取條件以及要更新的字段。
原始碼鏈結
請看使用示例:
安裝 nuget 包wihanli.common
public static class repositorytest
);var entity = repo.fetch(t => t.pkid == 1);
system.console.writeline(entity.token);
repo.update(t => t.pkid == 1, t => t.token, 1);
entity = repo.fetch(t => t.pkid == 1);
system.console.writeline(entity.token);
repo.delete(t => t.pkid == 1);
entity = repo.fetch(t => t.pkid == 1);
system.console.writeline($"delete operation ");
repo.execute("truncate table dbo.tabtestentity");
console.writeline("finished.");
}public class dbconnectionpool : defaultobjectpool
public dbconnectionpool(ipooledobjectpolicypolicy, int maximumretained) : base(policy, maximumretained)
}public class dbconnectionpoolpolicy : ipooledobjectpolicy
public dbconnection create()
public bool return(dbconnection obj)
}[table("tabtestentity")]
internal class testentity
public string token
public datetime createdtime
}}
示例使用了 objectpool 實現了乙個資料庫連線池,repository
例項化需要乙個獲取 dbconnection 物件的委託,而資料庫連線就是從這資料庫連線池中獲取。 一樣的寒假不一樣的感受
今天收到明天就放假的通知後,心裡頗不寧靜,短暫的寒假又要結束了。一樣的寒假不一樣的感受!時間管理 寒假剛開始的時候也向以前放假一樣用番茄時鐘,半個小時學習25分鐘,休息5分鐘 用了幾天後發現自己不用番茄時鐘,學習和休息之間也能處理的不錯就沒有用番茄時鐘了。學習英語的時間是固定的,上午8 00 10 ...
不一樣的編碼風格 Lambda表示式
lambda表示式也是c 3.0中最重要的特性之一。1 lambda表示式的簡介 lambda表示式可以理解為乙個匿名方法,它可以包含表示式和語句,並且用於建立委託或轉換為表示式樹。在使用lambda表示式時,都會使用 運算子,該運算子的左邊是匿名方法的輸入引數,右邊則是表示式或語句塊。1.1 la...
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...