120 likes | 391 Views
無痛資料庫應用開發 Entity Framework 實戰技巧. 多 奇數位創意 有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落 格: http://blog.miniasp.com/. 1. 對 DBA 的 6 個疑問?. 系統改版是否允許大幅改動 資料庫結構? 有多少人會參與應用程式的資料庫規劃? 有多少人會 參與資料庫效能調校? 有 多少人身兼 DBA 與 Developer ? 資料庫管理:基礎架構、日常維運 資料庫開發:結構設計、效能調校 有 多少開發人員會 撰寫預儲程序 ?
E N D
無痛資料庫應用開發 Entity Framework 實戰技巧 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/ 1
對 DBA 的 6 個疑問? • 系統改版是否允許大幅改動資料庫結構? • 有多少人會參與應用程式的資料庫規劃? • 有多少人會參與資料庫效能調校? • 有多少人身兼 DBA 與 Developer? • 資料庫管理:基礎架構、日常維運 • 資料庫開發:結構設計、效能調校 • 有多少開發人員會撰寫預儲程序? • 你覺得 DBA 重要還是 Developer 重要?
DBA 的兩種類型 • 強勢的 DBA • DBA 深受老闆寵愛 • 以資料庫為中心思考,掌控全局 • 主宰一切資料表、關連、索引、預儲程序、觸發程序、效能調校、… • 要改Schema?Come on! No way! • 弱勢的 DBA • 在公司裡開發人員說話比較大聲 • 只能確保資料庫正常運作、定時備份、… • 要改 Schema?沒問題,改壞你負責!
何謂 ORM (Object-relational mapping) ? • ORM 做什麼事? • 將結構化的關連資料對映成物件導向模型 • 將物件資料對應成關連資料 • 市面上有哪些 ORM 技術? • Typed DataSet • LINQ to SQL • Entity Framework • DevartLinqConnect • NHibernate • SubSonic … and much more …
採用 ORM / Entity Framework 有什麼好處 • 對 DBA 來說 • 更專注於自身的 DBA 生涯磨練 • 對開發人員來說 • 更專注於增強開發技巧 • 不再侷限於現有資料庫架構 • 以前: 對開發人員來說 DBA 越強勢越痛苦 (太沒結構) • 現在: 透過 ORM 技術開發不再受侷限 • 可以再開發時期快樂的且安全的重構 • Entity Framework 想達到的目的:專業分工 • 開發人員可以不懂 T-SQL / Stored Procedure • DBA 可以不懂 OOP、.NET、Entity Framework
Entity Framework 的開發方式 • Entity Framework 支援三種開發導向 • Database First Development • DBA is the king! • Model FirstDevelopment • DBA is helping. • Code First Development • DBA is nothing…… It’s a joke!
如何設計資料庫才能幫助開發人員? • 一定要有 Primary Key • 資料型別要定義完整 (想清楚) • 欄位型態 • 允許 NULL • 預設值 • 表格之間要建立適當的關連(Foreign Keys) • 依據作業需求設計合適的檢視表(Views) • 為複雜的查詢或資料操作撰寫預儲程序 • 有一致的命名規則 (可多用中文命名)
導入 Entity Framework 之後 DBA 能做的事 • 原本的資料庫維運工作不能少 • 協助開發人員對資料庫進行分析與效能調校 • 索引與查詢效能 • 分析交易與鎖定 • T-SQL 語法調校? • 執行計畫與查詢計畫?
Entity Framework 如何進行效能調校 • 非常有限度的調整 T-SQL 語法 • context.News.Include(“Category”) • context.ExecuteStoreCommand • context.ExecuteStoreQuery<T>(String, Object[]) • 善用預儲程序(Stored Procedure)優化查詢 • Insert • Update • Delete • Select
聯絡資訊 • The Will Will Web記載著 Will 在網路世界的學習心得與技術分享 • http://blog.miniasp.com/ • ★ ★ ★ Will 保哥的噗浪 ★ ★ ★ • http://www.plurk.com/willh/invite • Will 保哥的技術交流中心 (臉書粉絲專頁) • http://www.facebook.com/will.fans