忙活了一個多月,XLinq總算"能用"了,BUG總算"少點"了,準備真正替代EF了,現在已經初步在自己的項目中使用了
EF這家伙,優點不少,缺點也不少,我就扯幾個最讓我頭大的缺點(或許這里面的缺點是因為我不會用)
吐嘈EF的人也不少了,我再這么就吐嘈兩下完事的話有點沒事找事···
所以,針對上面這些坑,我找了很多的ORM(其實好像也不多),試過alinq、dbentry.net,alinq不說,收費的,用不起···后面這個的話,當時被坑多了,就沒用過了,對了,還有SOD,大神深藍醫生寫的···
然而我自己也曾寫過支持LINQ的ORM,但那代碼渣的夠可以,不過總算寫過,知道些原理,其實更多的是為了鍛煉,畢竟要支持LINQ的話,難度是比較大的,所以這一次又再一次自己寫,功能從簡單起見,主要有以下功能
LINQ一旦寫復雜了,確實要生成高性能的SQL非常難,因為就算生成能執行的sql都比較難。我更傾向于將業務拆分,變成簡單的LINQ語句能完成的功能。嵌套查詢或許以后會支持,但到時候估計就是一堆坑
不需要事先在DbContext里面把實體寫好,事實上什么都不寫都行,主要是為了便于封裝數據層,否則的話我每添加一張表都不得不去DbContext里面加一個實體
上面這個寫法在EF中是絕對不支持的,另外還支持Date屬性訪問
目前只支持了sqlite和sql server 2008 r2,應該說只要sql server 2008 r2支持了,那就可以部分支持其他sql server數據庫了
可以自定義生成自己想的sql
說這個我又要說java了,連hello world都沒跑起來卻搞了三天的配置,多麻煩!
降低學習成本
調用的方式和EntityFramework Exnteded類似,這也算是EF的又一個硬傷
這里只說最小化配置

我隨便建的xlinq數據庫,建了一個Users表,有兩個字段,Id和Username,其中Id為自增并且是主鍵


終于到這兒了

怎么的,這跟EF的寫法不是一模一樣的?
運行結果:


為什么要把插入放前面?因為插入了之后才有數據查詢

運行結果:

更新有兩種方法,先查詢再更新和直接更新
第一種:

運行結果:

第二種:

運行結果:

刪除也有查詢后刪除和直接刪除兩種,這里只說直接刪除



看著挺簡單的基本功能,但做起來真是一把辛酸淚。計劃中還有性能測試的,不過先看有多少人關注吧!
如果想討論與此相關技術或者索取源碼,請進QQ群74522853,答案XLinq
測試源碼:http://files.VEVb.com/files/wzxinchen/XlinqDemo.zip
新聞熱點
疑難解答