什麼是依賴數據庫
若是咱們用EF操做數據庫。架構
那麼CustomerController就對Context造成了依賴。函數
咱們這種依賴的寫法就是隱式的依賴3d
顯式依賴於隱式依賴blog
怎麼理解隱式的依賴呢?it
三層架構是比較清晰的 從BLL到DAL構造函數
當你進去一個BLL有好幾千行代碼的時候,你就崩潰了,由於你跟不知道BLL裏面有多少個外部的DAL引用。造價上Redis、log這些外部的引用。這個類就會變得很龐大,很複雜,引用
致使咱們沒有辦法去維護。甚至你都不知道這個類和其餘哪些類有關係。im
顯式依賴,像這種把全部的依賴都在構造函數內初始化數據
依賴倒置
依賴於高層業務,不依賴於低層業務的具體實現,依賴於具體的抽象
CustomerController就是一個高層的業務。
DBcontext就是一個低層業務的實現。若是如今要換成MySql的話 就須要在CustomerController裏面修改context的實例
這個時候我就要依賴於底層業務的實現。
經過Respository
當咱們不用EF的時候,CustomerContext就能夠改爲右邊的MemoryCustomerRespository替換掉當前的EF