我正在實施所有的數據訪問與精巧。 我的第一個想法是使用dapper實現存儲庫模式。 from:http://www.bradoncode.com/blog/2012/12/creating-data-repository-using-dapper.html在Dapper DbContext,DbSet等
然後,我將linq表達式添加到精簡的sqlbuilder中以最小化SQL,就像在示例(動態查詢)中那樣。所以,我能寫類似
sqlbuilder.Where(c=>c.Id == 1) or c.Id = myVar
,現在我問自己,如果是執行喜歡和DbSet和使用LINQ表達的DbContext一個好主意。
問題不在於實現完整的dbset或dbcontext。但只是看起來像(沒有所有複雜性)。
只需要一個DbContext來初始化連接和多個DbSet至少使用Dapper查詢表和一個基於給定鏈接表達式使用dapper sqlbuilder生成SQL的實現。
在閱讀了一些代碼段並與實體框架比較後,我認爲這是浪費時間,因爲實體框架已經做到了。 但隨着精簡版你有生成的SQL的完整控制,它會始終使用相同的模板。
在開始之前(浪費我的時間)我想知道這是不是一個好主意。
編輯:許多評論說,SqlBuider不是一件好事,那爲什麼它在Dapper項目中可用?
如果您需要實體框架的所有功能,請使用Dapper並使用實體框架。 Code-First讓事情變得非常簡單,您不必擔心自己在開發。 – 2015-04-03 14:15:32
你不能兩面都有。 EF和L2S由於某種原因很慢,Dapper因爲某種原因而速度很快。如果你將Dapper轉換爲EF或L2S,那麼它的速度會很慢,因爲SQL生成器並不完美,除非你是設計這種生成器的專家(根據外觀,你不是)你甚至不會接近L2S和EF所做的任何事情,所以你的發電機可能會產生比EF或L2S更高的WORSE結果。請記住,生成優秀的SQL不僅僅是簡單的翻譯。 – 2015-04-03 17:11:23
謝謝你的回答。這只是一個問題,我不會假裝像英孚設計師/開發人員一樣優秀。即使我的問題很愚蠢,一個好的答案可以幫助像我這樣的非專家。 – Madagaga 2015-04-03 17:47:37