您好,登錄后才能下訂單哦!
本篇內容介紹了“LINQ有哪些缺點”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
LINQ前景
目前的LINQ還是非常之不完善的,不論是LINQ團隊的LINQ TO SQL 或是 ADO.Net的LINQ TO ENTITY,微軟連VS2008的SP1都未將Dynamic。cs進行封裝,難道真的就如傳言說的,LINQ即將死亡?
其實任何情況都是未知數,就好比暴雪總是喜歡不按常理出牌一樣,微軟在今年經融危機中也受到了相當的創傷,所以誰能說LINQ的未來怎么樣,官方沒公開.Net4.0之前,不光LINQ,包括F#,一切都是謎。
那LINQ還能使用嗎?您在安裝厚重的VS2008的時候,宣傳廣告中會不停的顯示VS2008的新特性,其中重點就有LINQ,那作為一個全球***悍的開發軟件,把重點的目光投給LINQ,那么就一定有它的地位和意義。
VS2008還在CTP的時候,我就已經開始使用LINQ了,用了那么久,不斷的學習及體會到它的方便之處的同時,隨著不斷的深入,在體驗LINQ語言給我們帶來的快感的同時,漸漸LINQ的弊端也開始暴漏了出來,我個人發現LINQ的不足有如下:
1.LINQ非延遲加載需要變立即加載的話需要轉換成List<T>,但是同時帶來的是List<T>是無序的,那么將之做為數據源綁定的話, 自動排序將不存在,那么目前解決辦法只能自己重寫List<T>的Sort()方法,網上有相關的文章可以參考,如何讓它序列化。
2.LINQ的動態查詢效果類似于C#的反射,必須自己去網上下載一個Dynamic。cs,我很不明白為什么連SP1都不把它包裝一下?
3.LINQ的dbml很討厭,為什么就不能做得和Dataset一樣智能些,如果用VS的對象關系設計器手動更改dbml代碼的話,那么你會發現你原先修改好的東西全被覆蓋了,這會氣瘋你,請問誰會無聊到手寫非常之復雜的dbml?目前解決辦法只有使用plinqo,CodeSmith出品,看到CodeSmith應該再熟悉不過了,我打一開始就很排斥它真的。
4.LINQ讀取存儲過程不能識別exec命令,假如你的存儲過程結尾不是類似select * from。。。,而是exec 。。。,好那么你把它拖進dbml里,你就會發現不管你怎么寫,返回值都是int類型,那么有人講了,我可以手動把int改成 IsingleSource,但是這樣又回到了第(3)點不是嗎?這意味著什么?想用LINQ使用存儲過程,不能用拼接的通用存儲過程,而必須老老實實的寫清楚存儲過程里的表名,列名等等,同樣意味著開發效率無法提高。
5.LINQ如不使用存儲過程,那么它的性能就只能說比傳統的connection連接優越一些,還好IQueryable內置了緩存功能,但還是遠無法達到數據庫函數及存儲過程的效果,畢竟LINQ只是一個提高開發效率的方法,一種清新簡化的查詢語言。
綜合以上LINQ目前的現狀弊端,大家可想,LINQ只能適應中小型的項目開發使用,但是如果你能非常熟練的使用LINQ的查詢語句及Lambda表達式的話,那么你的中小型項目開發將是非常有效率及安全性很高的,畢竟LINQ基于2.0的泛型,而且LINQ的優勢同樣與它的不足一樣惹眼,我特別喜歡LINQ的Lambda表達式,那簡直是程序員的藝術,假使,我是說假使有那么一天,LINQ能將我們寫的Lambda表達式直接編譯成存儲過程,類似if exist() drop之類的話,那就無敵了。LINQ前景不是很樂觀啊,讓我們一起期待.Net4.0吧。
“LINQ有哪些缺點”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。