ORM全新理念,談主流ORM思想,待續


一、EF(實體框架)

    主流的ORM思想以Linq為主要思想支柱,其中王者不得不說為EF,優雅便捷可謂正統,當其性能和實戰性似乎仍待提高.Linq不能為我們生成理想的sql,而且linq自身的性能有損失.這是EF不得不面對主要的問題.EF的優點諸多不必多說.

    Linq的優缺點似乎也成了EF的優缺點之一.微軟想通過Linq讓我們以一種面向數據對象的方式來思考,及持久化他們的數據.可是我們可想想數據庫的中的記錄難道就不是對象了?Linq給人以優雅和便捷我想這是他明顯的優勢,然后就是匿名對象在其中發揮的重要作用.如下所述:

var Obj=  from c  in ctx.Customers
                   where c.Country ==  " France " && c.Orders.Count >  5
                   select  new
                  {
                      Country= c.Country,
                      City= c.City,
                      Count= c.Orders.Count
                  };

 

 然后我們Obj.Country, Ojb.Count的方式操作數據.優雅便捷.

如果讓你看到以下的情況,你在一個無法寫出linq的情況下會如何選擇

自定義類名(這個類其實事先是不存在的,有框架自動生成)
int count=obj.Count;
string country=obj.Country;
var list=DBFactory.GetAutoEntities( " 相當復雜的一個sql查詢語句 ", " 自定義類名 ");
for( var a  in list){
int count=a.Count;
string country=a.Country;
}

 

這是Moon的一個新特性.其中的obj是類名的一個實例,它的成員是查詢中記錄的字段.歡迎大家到時試用.

 其實linq沒有給我帶來什么,只是一種概念上的錯覺,負責的sql它就無能為力了.其實一個匿名類型作為model返回給視圖時是無法使用的,這也是一個問題,但moon這不然,因為事實上它是強類型.我的設計理念:大道至簡.

 

對於實體框架的性能不用多說,給一個比人的測試:http://www.189works.com/article-54297-1.html

總之:性能在大型項目中的需求是至關重要的,不要只說瓶頸在io和網絡上,其實代碼本身是重要的一環.

二.Nhiberate

不得不說它很強大,在很多方面都由於EF,當然linq的支持不如EF.物極必反視乎是自然界的普遍規律,強大帶來的復雜性也不容小覷.帶來的學習成本也是比較大的.復雜的配置是java的顯著體征..NET陣營似乎通常都不喜歡.

三.我們談談企業開發的宗旨.

 

企業開發宗旨在於高效、便捷以及系統升級與維護的穩定.其中微軟沒有做到性能的高效.nhiberate沒有做到使用上的便捷.正印證了一句話:很多事情沒有完美的解決方案,只有一個平衡點.
 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM