標籤:
進行本次文章之前,我們可能需要補充一些基本知識。
首先我們系統是基於介面編程的,我們為什麼要使用借口編程,其實這是應用了一種公司專屬應用程式架構模式
Repository(倉儲)
一種用來封裝儲存,讀取和尋找行為的機制,它類比了一個對象集合。
支援在領域和資料對應層之間實現徹底分離和單向依賴關係的目標。
介面編程
最主要的目的是使關注點分離,讓開發人員各司其職
代碼封存保密,分包開發,無需要給予邏輯結構代碼,只需要給予介面檔案
缺點:設計困難,比傳統的三層,單類模式困難,但是介面程式員工資都很高!
AOP(面向方面編程)
我們為了彌補物件導向缺陷,我們系統將引入面向方面編程
主要用於日誌記錄,交易處理,異常處理等等。
概念這種東西過於模糊,我們必須經曆過一個大系統才能認識這些概念性模型。我無法用文章來下詳細解析此系統的深層概念,需要大家在日常工作中實踐和意會,推薦一本.net的設計書籍《Microsoft .NET企業級應用架構設計》這本書詳細的講述了介面編程,面向方面編程
通過上面我們需要構建項目的解決方案。
雖然MVC的controller層包含了邏輯,但是對於一個大系統,我們不可能把業務和資料庫底層包含在一起,雖然提供了Models模型檔案夾,在第二講我把他刪除了,我們將這一層Model層提取出來,任何層的設計都好,都是從三層設計模式衍生出來的,本系統也不例外。我們是基於介面編程的倉儲模式,所以我們必須有BLL,IBLL,DAL,IDAL的對應類庫。
好,現在我們右鍵我們的解決方案吧。分別建立
- App.BLL (業務層)
- App.IBLL (業務層介面)
- App.DAL (資料層)
- App.IDAL (資料層介面)
- App.Models (模型)
- App.Common(通用類庫)
- App.Core (核心類庫)
圖:
添加:EF5.0 VS2012旗艦版預設已經整合安裝了EF5.0我們把他存放到App.Models類庫下
右鍵----添加建立項
輸入名稱DB大家自己取名稱,這裡選擇空模型,我們是模型優先模式,不是code frist模式要注意。對於系統來說我認為模型優先是有優勢的
展開DB.edmx刪除DB.Context.tt和DB.tt才能正確使用DB Frist模式,看到DB.edmx的屬性視窗,將代碼建置原則一項的無改為預設值
我們開啟SQL Server如果你安裝了VS2012我相信你的資料庫也不老,我是SQL Server2008 R2版本
我們建立一個簡單的案例表吧:
Create database DB 建立一個名稱為DB的資料庫
use DB
go
CREATE
TABLE
[dbo].[SysSample](
[Id] [
varchar
](50)
NOT
NULL
,
[
Name
] [
varchar
](50)
NULL
,
[Age] [
int
]
NULL
,
[Bir] [datetime]
NULL
,
[Photo] [
varchar
](50)
NULL
,
[Note] [text]
NULL
,
[CreateTime] [datetime]
NULL
,
CONSTRAINT
[PK__SysSampl__3214EC075AEE82B9]
PRIMARY
KEY
CLUSTERED
(
[Id]
ASC
)
WITH
(PAD_INDEX =
OFF
, STATISTICS_NORECOMPUTE =
OFF
, IGNORE_DUP_KEY =
OFF
, ALLOW_ROW_LOCKS =
ON
, ALLOW_PAGE_LOCKS =
ON
)
ON
[
PRIMARY
]
)
ON
[
PRIMARY
] TEXTIMAGE_ON [
PRIMARY
]
GO
好了有了資料庫和表,我們往資料庫添加模型映射,說到這裡我簡單說說我們用EF的原理,EF是一個ORM架構,ORM是通過描述對象和關聯式資料庫之間的映射,將程式中的對象自動持久化到關聯式資料庫中,簡單易用、效能突出的泛型持久化支援,則將使您能夠將更多注意力集中到業務開發,所以大家懂要懂得什麼是事務,加入我們從資料庫取出10條資料,我刪除了1條,過一會在刪除1條,只要我提交事務才到資料庫執行刪除,否則將是刪除記憶體的資料庫,所以資料庫的壓力小了,記憶體的壓力大了。
建立串連-----選擇Microsoft Sql server
設定到這裡,在2012中”代碼建置原則“設定“預設”方式,2013中設定成”舊的ObjectContext“
相信你此時已經看到了效果了,我可能寫得太詳細了,文章有點亂。
如果你用過熟悉三層架構,那現在可以動手對項目之間的關係進行引用了。
下面給出一個引用流程:按照這個來進行引用,有了更清楚的讓大家看出注入,我們目前這樣引用
App.Admin-------------App.Models,App.Common,App.Core,App.IBLL,App.BLL,App.DAL,App.IDAL,System.Data.Entity
App.BLL-----------App.Models,App.IBLL,App.DAL,App.IDAL,System.Data.Entity
App.BLL--------------App.IBLL,System.Data.Entity
App.DAL--------------App.IDAL,System.Data.Entity
App.IDAL--------------System.Data.Entity
下一講我們將利用介面編程我們實現一個增刪改代碼,一些糟糕的代碼
構建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的後台管理系統(4)-構建項目解決方案 建立EF DataBase Frist模式