Microsoft 2013 新技術學習筆記 二

在探討系統重構的代碼結構組織以前,先初步考慮框架與數據庫的交互,在.net平臺上數據訪問方案有人總結爲三類:DataSet、ADO.net 2.0、ORM組件。我只熟悉ADO.NET方式,衆多的企業特性(如鏈接池、緩存等)均自行寫代碼實現,在這次重構時,我固然能夠直接將原來的數據訪問方案直接搬過來在Model中實現與數據層的交互,但既然考慮重構,爲什麼不嘗試一下新的ORM呢,在起初我考慮HNibernate框架的,但我在2008年的一個全國應用範圍的項目中見過開發團隊用Entity Framework做爲數據層訪問方案,一直對此方案比較好奇,因此這裏採用Entity Framework 6.0.1

again, 對此有選擇性障礙的人,中止尋找銀彈吧,好比Entity Framework框架討論不少的運行性能問題,我認爲可用空間換時間的思路(比較粗暴的說法:硬件空間換響應時間。固然不是這樣簡單的概念,這裏我我的喜歡這樣概述此思路而已)來解決,不用鑽牛角尖太深。

EF有三種方式(three ways)着手:Database First、Model First、Code First,通俗的話來講:數據庫

  • Database First:先構建數據庫結構,而後經過逆向工程來自動建立數據模型和相關對象代碼,最後經過這些對象來與數據庫交互
  • Model First:先在VS工具中建立數據模型,而後自動生成相關對象代碼及數據庫,最後經過這些對象來與數據庫交互
  • Code First:先在VS中建立數據對象類,EF自動轉換成模型及數據庫,最後經過這些對象來與數據庫交互

一般分工明確的項目團隊中,設計人員用ORM工具(好比我習慣用PowerDesigner)完成數據庫結構的設計,而後交給開發人員進行邏輯代碼的開發。 for me, 這部分工做已經完成了,整個後臺管理平臺的數據結構乖乖的列在數據庫中了,看起來我可用Database First方式着手。

這裏順便想提一句Code First方式,這令我回想起早幾年的技術銷售(TS)的工做,這個角色的工做中涉及的POC要求一個快字,Code First簡直就是爲快而生的,用戶POC需求拿到後,直接進入代碼編寫業務邏輯,不用花時間在數據層的處理上,最重要的是POC成功後,即便要將POC直接轉化到生產環境也是可行的。緩存

Code First方式簡單的開發流程可歸納以下:數據結構

  1. 直接在Model中建立表明業務實體(Entity)的類(class),如下是幾個基本規則(更復雜的Entity定義規格可參閱這裏)
    1. Entity(或者說數據表)的關鍵字默認規則:"ID" or "classsnameID"屬性爲關鍵字。固然DatabaseGenerated標籤可容許本身定義關鍵字
    2. Entity間的一對多關聯用泛型集合類型的navigation property來表示
    3. Entity類名默認是數據表名,Entity類屬性默認是數據表字段名
    4. foreign key的默認定義規則:<navigation property name><primary key property name>
  2. 建立Database Context(這裏除了建立數據庫鏈接外,還將數據表與Entity關聯起來)
    1. 用DbSet<T>將數據表與定義的Model類關聯起來,且DbSet會完成常見的數據表CRUD操做
  3. 建立視圖顯示Entity對象

開發流程的核心基本就是如此,中間涉及的各類規則可參閱這裏,包括數據庫鏈接字符串規則、Entity關聯規則、甚至你能夠自定義規則mvc

 一句話小結三種方式的選擇:Code First適合作演示系統,不少東西不用費時間考慮,Database First顯然適合導入現有的數據結構,從頭實施大型項目仍是以模型先着手,完整的模型視圖有利於理清各個對象間的關係。app

肯定了asp.net mvc + EF 後,接下來如何進行呢?對我來講,涉及的新技術好多哦,系統的學習是不可能的,我決定採起這樣的方式進行:蒐集asp.net mvc的最佳實踐經驗,以此爲基礎來展開本次重構,整體來說從如下幾個方面着手蒐集框架

  • 代碼結構的組織
  • 身份驗證機制的新實現(針對我原系統而言)
  • 權限管理機制的新實現(針對我原系統而言)
  • 資源管理機制(一項具體業務,這裏不詳述其內容)
相關文章
相關標籤/搜索