ASP.Net MVC+EF架構


ASP.Net MVC是UI層的框架,EF是數據訪問的邏輯。

如果在Controller中using DbContext,把查詢的結果的對象放到cshtml中顯示,那么一旦在cshtml中訪問關聯屬性,那么就會報錯。因為關聯屬性可以一致關聯下去,很誘惑人,include也來不及。

如果不using也沒問題,因為會自動回收,但是這打開了“潘多拉魔盒”,甚至可以在UI層更新數據,相當於把數據邏輯寫到了UI層。

有的三層架構中用實體類做Model,這樣也是不好的,因為實體類屬於DAL層的邏輯。

沒有最好的架構,只有最合適的架構!      架構不是設計出來的,而是演化出來的!

一、EO 

         EO(Entity Object,實體對象) 就是EF中的實體類,對EO的操作會對數據庫產生影響。 

         DTO(Data Transfer Object,數據傳輸對象),用於在各個層之間傳遞數據的普通類,DTO有哪些屬性取決於其他層要什么數據。DTO一般是扁平類,也就是沒有什么關聯屬性,都是普通類型的屬性,一些復雜項目中,數據訪問層和業務邏輯層直接傳遞用一個DTO類,DTO類類似與三層架構中的Model。

         EO 相當於DataTable,不能傳輸到DAL之外;  DTO就是三層Model,在各個層中間傳輸數據用的

         VIewModel(視圖模型),用來組合來自其他層的數據顯示到UI層,簡單的數據可能可以直接把DTO交給界面顯示,一些復雜的數據可以要重新轉換為VIewModel對象。

 

二、多層架構

        搭建一個ASP.NET MVC三層架構項目:DAL、BLL、DTO、UI(asp.net.mvc)。UI、DAL、BLL 都引用DTO;BLL引用DAL;EF中所有的代碼都定義到DAL,   BLL中只訪問DAL、BLL中不要引用DAL中EF的類,不要在BLL中執行Include操作,所有數據准備工作都在DAL中完成

 

三、架構退化

             UI+BLL+DAL   =>  UI+Service

             合適的架構:能夠滿足當前項目的要求,並且適度的考慮以后的項目的發展,不要想的太遠,不要“過度架構”,讓新手能夠快速入手

             UI項目雖然不直接訪問EF中的類,但是仍然需要在UI項目的App.config(Web.config)中對EF做配置,也要在項目中通過Nuget安裝EF,並且把連接字符串配置在UI的web.config中

 


免責聲明!

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



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