各位看官久等了。最近比較忙亂,一是因為學習新技術本身就是一件很耗精力的事情,另一個原因該項目升級為了一個商業項目。然后還有PB項目的開發,時間緊,任務重……
------------------------------技術理想與生活實現分割線------------------------------------
這篇主要是總結了一下ORM層面從EF遷移到NPoco上,涉及到的一些操作,寫的比較籠統,需要詳細解釋的可以留言。
一、Nop.Data部分
遷移后的項目文件結構,見下圖:
1、創建NPocoContext,實現IDbContext接口。(尚未實現存儲過程相關的接口)。
2、創建NPocoRepository,實現IRepository接口。
3、將BaseEntity拆分,結構定義如下:
二、Nop.Domain部分
遷移后項目文件結構如下:
大部分Entity都是可以直接使用的,有三種情況需要進行更改:
1、對於1對多的Entity關系,EF是在通過設置/代碼配置后,自動映射,體現到數據庫中就是各種Mapping表。而對於NPoco而言,必須手動實現,因此需要創建個Mapping的Model,繼承自BaseMapping。
2、EF中很多多表聯查的從查詢Entity,改成在數據庫中建試圖,然后創建Model。對於有Id的查詢,繼承自BaseViewEntity;沒有的繼承自BaseView。
3、對於分頁實現,Nop判斷是否支持存儲過程,如果支持使用存儲過程;如果不支持,用LinQ。而NPoco自帶Page()函數,因此改為數據庫的View+Page()函數實現。
三、總結
1、EF很符合微軟技術的一貫氣質,大而全,由繁入簡,學起來比較累。
2、NPoco屬於草根氣質,小而精,由簡入繁,可以循序漸進的使用,我喜歡草根。
