Submit Search
Upload
Entity Framework實戰
•
Download as PPTX, PDF
•
14 likes
•
1,810 views
國昭 張
Follow
深入描述Entity Framework的DB First
Read less
Read more
Technology
Report
Share
Report
Share
1 of 113
Download now
Recommended
Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
Atsushi Kurumada
SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括
kk_Ataka
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
[AWS Summit 2012] 基調講演 Day2: Go Enterprise!
[AWS Summit 2012] 基調講演 Day2: Go Enterprise!
Amazon Web Services Japan
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Recommended
Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
Atsushi Kurumada
SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括
kk_Ataka
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
[AWS Summit 2012] 基調講演 Day2: Go Enterprise!
[AWS Summit 2012] 基調講演 Day2: Go Enterprise!
Amazon Web Services Japan
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
DocuWorks 7
DocuWorks 7
Fuji Xerox Singapore
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
Jun Kato
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話
Wataru Unno
Onieで遊んでみようとした話
Onieで遊んでみようとした話
Masaru Oki
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Kentaro Yoshida
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
シスコシステムズ合同会社
AWS Systems manager 入門
AWS Systems manager 入門
Serverworks Co.,Ltd.
Oracle Instance 介紹
Oracle Instance 介紹
Chien Chung Shen
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
Insight Technology, Inc.
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
hiboma
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
Daiki Kawanuma
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違い
Yoshinari KUWAYAMA
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
Amazon Web Services Japan
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
junichi anno
軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門
Kentaro Masumori
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法
Kazuhiko Nakamura
Entity framework 與 LINQ
Entity framework 與 LINQ
Sean Lu
Entity framework 入門第一課
Entity framework 入門第一課
Sean Lu
More Related Content
What's hot
DocuWorks 7
DocuWorks 7
Fuji Xerox Singapore
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
Jun Kato
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話
Wataru Unno
Onieで遊んでみようとした話
Onieで遊んでみようとした話
Masaru Oki
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Kentaro Yoshida
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
シスコシステムズ合同会社
AWS Systems manager 入門
AWS Systems manager 入門
Serverworks Co.,Ltd.
Oracle Instance 介紹
Oracle Instance 介紹
Chien Chung Shen
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
Insight Technology, Inc.
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
hiboma
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
Daiki Kawanuma
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違い
Yoshinari KUWAYAMA
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
Amazon Web Services Japan
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
junichi anno
軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門
Kentaro Masumori
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法
Kazuhiko Nakamura
What's hot
(20)
DocuWorks 7
DocuWorks 7
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話
Onieで遊んでみようとした話
Onieで遊んでみようとした話
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
AWS Systems manager 入門
AWS Systems manager 入門
Oracle Instance 介紹
Oracle Instance 介紹
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違い
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法
Viewers also liked
Entity framework 與 LINQ
Entity framework 與 LINQ
Sean Lu
Entity framework 入門第一課
Entity framework 入門第一課
Sean Lu
Team Foundation Server
Team Foundation Server
國昭 張
Linq實戰
Linq實戰
國昭 張
Linq初階
Linq初階
國昭 張
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
Duran Hsieh
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
Duran Hsieh
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Justin Lin
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
Alan Tsai
ASP.NET MVC Performance
ASP.NET MVC Performance
rudib
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
Will Huang
Mvc architecture
Mvc architecture
Surbhi Panhalkar
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
Duran Hsieh
Viewers also liked
(15)
Entity framework 與 LINQ
Entity framework 與 LINQ
Entity framework 入門第一課
Entity framework 入門第一課
Team Foundation Server
Team Foundation Server
Linq實戰
Linq實戰
Linq初階
Linq初階
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
ASP.NET MVC Performance
ASP.NET MVC Performance
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
Mvc architecture
Mvc architecture
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
Similar to Entity Framework實戰
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
yiditushe
Sql Alchemy Story
Sql Alchemy Story
Zoom Quiet
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
網站設計100步
網站設計100步
evercislide
Struts Mitac(1)
Struts Mitac(1)
wangjiaz
Yii2 restful 基礎教學
Yii2 restful 基礎教學
Duncan Chen
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
zhoujg
1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
Struts学习笔记
Struts学习笔记
yiditushe
Oracle服务器及存储介绍
Oracle服务器及存储介绍
Ethan M. Liu
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿
yiditushe
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
james tong
通过Struts构建Web应用
通过Struts构建Web应用
yiditushe
资身Dba经验谈
资身Dba经验谈
yiditushe
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Frank S.C. Tseng
Code guidelines
Code guidelines
Jeffray Huang
数据库性能诊断的七种武器
数据库性能诊断的七种武器
Leyi (Kamus) Zhang
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
中远公司 Java培训资料
中远公司 Java培训资料
yiditushe
Similar to Entity Framework實戰
(20)
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
Sql Alchemy Story
Sql Alchemy Story
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
網站設計100步
網站設計100步
Struts Mitac(1)
Struts Mitac(1)
Yii2 restful 基礎教學
Yii2 restful 基礎教學
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
1, OCP - architecture intro
1, OCP - architecture intro
Struts学习笔记
Struts学习笔记
Oracle服务器及存储介绍
Oracle服务器及存储介绍
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
通过Struts构建Web应用
通过Struts构建Web应用
资身Dba经验谈
资身Dba经验谈
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Code guidelines
Code guidelines
数据库性能诊断的七种武器
数据库性能诊断的七种武器
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
中远公司 Java培训资料
中远公司 Java培训资料
More from 國昭 張
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
國昭 張
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
國昭 張
20190126 ddd-meetup1
20190126 ddd-meetup1
國昭 張
事件風暴-設計衝刺
事件風暴-設計衝刺
國昭 張
事件風暴-領域建模
事件風暴-領域建模
國昭 張
單元測試
單元測試
國昭 張
Docker實務
Docker實務
國昭 張
Scrum essential
Scrum essential
國昭 張
Docker進階探討
Docker進階探討
國昭 張
Vue
Vue
國昭 張
Docker基礎
Docker基礎
國昭 張
DDD架構設計
DDD架構設計
國昭 張
DDD系統分析
DDD系統分析
國昭 張
DDD引導
DDD引導
國昭 張
前端測試
前端測試
國昭 張
Asp.net core v1.0
Asp.net core v1.0
國昭 張
Redux+react js
Redux+react js
國昭 張
React js
React js
國昭 張
架構設計-資料存取的選擇
架構設計-資料存取的選擇
國昭 張
前端自動化工具
前端自動化工具
國昭 張
More from 國昭 張
(20)
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
20190126 ddd-meetup1
20190126 ddd-meetup1
事件風暴-設計衝刺
事件風暴-設計衝刺
事件風暴-領域建模
事件風暴-領域建模
單元測試
單元測試
Docker實務
Docker實務
Scrum essential
Scrum essential
Docker進階探討
Docker進階探討
Vue
Vue
Docker基礎
Docker基礎
DDD架構設計
DDD架構設計
DDD系統分析
DDD系統分析
DDD引導
DDD引導
前端測試
前端測試
Asp.net core v1.0
Asp.net core v1.0
Redux+react js
Redux+react js
React js
React js
架構設計-資料存取的選擇
架構設計-資料存取的選擇
前端自動化工具
前端自動化工具
Entity Framework實戰
1.
Entity Framework實戰
2.
大綱 ORM/OAM Entity
Framework介紹 EF的三種開發模式 實體模型設計器 CRUD EF6的新功能 Repository/Unit Of Work模式 效能考量
3.
ORM 解決物件導向與關聯式資料庫阻抗不匹 配的問題。 它就像是物件導向系統中的虛擬資料庫。
4.
ORM帶來的好處 加速開發 ◦ 避開不純熟的SQL造成效能低落
降低開發時程 ◦ 減少重覆資料處理初始化程式碼 降低開發成本 ◦ 得到物件導向開發的優點 兼容各品牌的關聯式資料庫 ◦ 各品牌資料庫的完成的SQL標準程度不一, 並且有自己的客製化。
5.
ORM的缺點 效能不佳 無法直接控制SQL語法
6.
OAM? ORM的R字母代表的是Relational,其指 的是關聯式資料庫。 關聯式資料庫是儲存資料的一種方式, 但不是全部情境都適用。
OAM的A字母代表的是: Any!
7.
近代資料存取 SQL NoSQL 依資料特性寫到適合 的資料儲存系統 依資料特性從適合的 資料儲存系統取出 SQL與NoSQL之間已不再是零和遊戲
8.
Entity Framework介紹 Entity
Framework是微軟公司自行開發 的一套ORM框架,目前已將源始碼開放 出來了。 Entity Framework目前常以EF縮寫代替。 Entity Framework是奠基於ADO.Net 2.0 Provider模型之上。
9.
EF應用上的概觀圖
10.
EF內部細節的概觀圖
11.
操作EF的方式 Linq/E-SQL 中繼資料工作區 物件中繼資料 (O-工作區) 概念性結構描述 (C-工作區) 儲存結構描述 (S-工作區) CSDL MSL SSDL C-S 的對應 O-C 的對應 用戶檢視引擎 物件服務 EntityClient資料提供者 ADO.Net資料提供者 E-SQL LinQ
IEnumerable<T> E-SQL CCT DataReader •EntityConnection •EntityCommand •ExecuteReader •ObjectContext •ObjectQuery<T> •資料類別 •EntityConnection •EntityCommand •ExecuteReader ADO.Net 2.0 E-SQL CCT DataReader
12.
結構描述 CSDL ◦ 概念模型;主要是偏向物件導向系統的觀點
MSL ◦ 對映概念上定義的項目與實體儲存的項目 SSDL ◦ 實體儲存模型;與實際上使用的儲存系統所 使用的資料定義較貼近
13.
用戶檢視引擎 (Client View Engine)
當MSL編譯過後會產生出一個查詢/更 新檢視。 用戶檢視引擎會使用這些檢視來正反兩 個方向轉換開發人員定義的概念性結構 與實體儲存結構。 (其實就是一個Parser+Converter)
14.
物件服務(Object Service)層 為開發人員簡化物件在記憶體中變更的 追蹤。(利用ObjectStateManager)
簡化將變更存回到資料庫的過程。 物件服務接收ESQL/Linq並將標準命令 樹(CCT)所產生的運算式傳遞給 EntityClient執行。
15.
EF的三種開發模式 資料庫先行 模型先行
程式碼先行(Existing Db)
16.
新DB 舊DB Model First • 使用實體設計工具建立模型 •
DB是依模型建構而成 • POCO也是依模型產生 Code First(新DB) • 使用類別來對應資料表 • DB是依類別建構而成 • 使用Migration來演化DB Database First • 使用實體設計工具以逆向工 程的方式建立模型 • POCO依模型自動產生 Code First(舊DB) • 使用類別來對應資料表 • 可使用逆向工程的工具 來輔助建立POCO
17.
DataBase First建立步驟(1) 利用實體模型建立精靈建立實體模型
18.
DataBase First建立步驟(2) 選擇由資料庫產生
19.
DataBase First建立步驟(3) 建立連線字串
20.
DataBase First建立步驟(4) 確認產生的連線字串與組態設定
21.
DataBase First建立步驟(5) 選取要映射的資料庫項目
22.
實體模型設計器 模型關聯圖 對應詳細資料 模型瀏覽器
23.
專有名詞 實體(Entity) 複雜型別 (Complexity
Type) 列舉(Enum) 關聯(Relation) 函式(Function) 容器(Containter)
24.
實體(Entity) 類別: 物件的藍圖,亦是一般性觀點。
實體: 具有商業邏輯和系統資訊的物件, 並且可被識別。
25.
複雜型別 用於函數/預存程序的輸出/入參數。 物件導向觀點中的: ◦
Use ◦ 聚合
26.
列舉 整數型欄位的值域限制
27.
函數 資料庫中宣告的函數或預存程序
28.
容器(Container) 依特定存取規則有組織地儲存其它物件。 容器的三個要點: ◦
存取 ◦ 儲存 ◦ 檢索
29.
MetaData檔案
30.
如何檢示MetaData
31.
如何自動產生POCO? T4(Text Template Transformation Toolkit)
一個文字範本,在範 本中可以透過程式 碼與邏輯來決定要 嵌入那些文字。
32.
組態 connectionStrings entityFramework ◦
defaultConnectionFa ctory provider App.config的內容
33.
組態: DefaultConnectionFactory 當組態檔中沒有設定連線字串時,EF會 自動使用指定的 DefaultConnectionFactory 若沒有設定連線字串也沒有設定 DefaultConnectionFactory,則使用程式 碼優先開發(Code
First)會自動套用:
34.
組態:Provider 組態有兩個重要的參數: ◦ InvariantName:
Provider的唯一識別名稱 ◦ Type: Provider組件的完整命名空間
35.
CRUD Entity Framework的Container已經封裝 了許多資料存取上的細節,讓資料存取 的操作變得單純。
36.
新增Customer 新增操作有兩個要 點: ◦ 實體的Add方法 ◦
容器的SaveChange 方法
37.
檢索Customer相關資料 檢索所使用的是 Linq的API,需熟悉 Linq操作才能瞭解 如何正確取得所需 要的資料。
38.
更新Customer 更新的處理極其簡 單,其原因是Entity Framework會自動 追蹤實體是否有被 修改,只要任一屬性 被異動馬上會被查 覺,當呼叫 SaveChange時,會 自動更新資料庫中 資料。
39.
刪除Customer 刪除實體與新增實 體的作法極其類似, 唯一差別僅在呼叫 的容器方法 為:Remove;除此之 外,在最後仍是需要 呼叫容器的 SaveChange方法 來提交變更。
40.
CRUD的Pitfull DateTime的預設值 資料欄位預設值
不同的SQL Server版本 逾時 甲租乙還 局部更新
41.
DateTime的預設值 .Net系統的DateTime型別與資料庫的 型別對應是DateTime2。 若資料表設定是使用DateTime,則需要 在程式中特別設定DateTime型別的屬 性值,否則會引發Exception。
42.
資料欄位預設值 若沒有特別指定,則無法套用預設值
43.
SQL Server版本不同 當正式環境與測試環境的資料庫版本不同 時, 需調整SSDL中的 ProviderManifestToken屬性的值。 範例:
若是SQL Server 2005版本,則直接修改值為2005
44.
甲租乙還 由於Container具有 追蹤的特性,若甲容 器的實體沒有切斷 連結就在乙容器中 進行存取操作,會發 生例外。 甲 乙
45.
僅更新某個欄位 欲指定某個欄位更新,可針對對該實體的 IsModifed屬性設定為true即可。
46.
EF6增加的新功能 EF6大幅提升效能,與過去不同的是,視 圖引擎不再是隨需產生,而是事先產生 再鏈結,如此一來減少了暖啟動時間。
47.
EF6中較大的更新 支援Async/Await模式 基於程式碼的組態設定
連線的可適性 攔截器 重覆使用同一個Connection物件 重覆使用同一個交易物件 提供批次新增/刪除的方法
48.
提供Async/Await模式
49.
基於程式碼的組態設定 擺脫過去組態設定 的束縛,讓組態設定 可以自由化。
50.
連線的可適性 提供四種處理連線不穩定的策略: ◦ DefaultExcutingStrategy(預設) ◦
DefaultSqlExcutionStrategy ◦ DbExecutionStrategy ◦ SqlAcureExecutionStrategry
51.
設定連線策略
52.
欄截器
53.
攔截器的方法 方法 意義 ADO.Net對應方法 NonQueryExecuting
在執行資料異動前被呼叫 ExecuteNonQuery NonQueryExecuted 在執行資料異動後被呼叫 ExecuteNonQuery ReaderExecuting 在執行查詢前被呼叫 ExecuteReader ReaderExecuted 在執行查詢後被呼叫 ExecuteReader ScalarExecuting 在執行單物件查詢前被呼叫 ExecuteScalar ScalarExecuted 在執行單物件查詢後被呼叫 ExecuteScalar
54.
藉由攔截器來實現OAM- 從Nuget安裝套件
55.
藉由攔截器來實現OAM- 宣告Log類別
56.
藉由攔截器來實現OAM- 撰寫Interceptor
57.
藉由攔截器來實現OAM- Interceptor的建構子
58.
藉由攔截器來實現OAM- NonQueryExecuted實做
59.
藉由攔截器來實現OAM- 容器的建構子中註冊Interceptor
60.
從MongoDb觀察紀錄
61.
重覆使用同一個連線物件 舊版的Entity Framework在SaveChanges之後就會關閉連線,但現在 已經可以重覆開啟與關閉。
62.
重覆使用同一個交易物件
63.
重用已開啟的連線/交易物件 實務上,有可能會需要重用連線與交易 物件。 通常會應用在跨資料庫的分散式交易。
64.
調整容器的建構子
65.
分散式交易
66.
批次新增/刪除
67.
Repository樣式 Repository一如其名:倉儲。其目的在於 封裝資料存取的細節。 Repository實做上多會搭配介面以利各 種物件導向操作。
68.
繼承與封裝 Repository的目的就在於封裝,其封裝的 程度依系統的複雜度而定。 在經過一段時間後可以發現到系統存取 的通用方法,至此可以考慮抽象化並將 通用方法取出。
69.
常用到的方法 方法 輸入參數 意義 GetAll
無 取得全部資料 GetBy PK欄位 依PK取得資料 Insert 實體 新增 AddRange 實體集合 批次新增 Update 實體 更新 Delete 實體 刪除 DeleteBy PK欄位 依PK刪除 RemoveRange 實體集合 批次刪除 Filter Lambda陳述式 篩選多筆資料 OrderBy Lambda描述式 排序資料 GetWithPagig 啟,迄 分頁
70.
Repository介面 一般操作介面 查詢介面
71.
Repository實做- 建構子
72.
Repository實做- GetAll屬性 以屬性的方式操作GetAll其優點在於可以省去打小括弧。
73.
Repository實做- GetBy DbSet此型別所提供的Find方法極為強大;當容器中已存在指定的 實體時,Find方法會直接從容器取出而不會連線到資料庫下命令,如 此一來便能大幅減少效能的損耗。
74.
Repository實做- Insert/AddRange 新增方面的操作都相對簡單
75.
Repository實做- Update 更新的處理重點在於Attach這個部份,其餘相對簡單
76.
Repository實做- 刪除 刪除的操作多樣性比較高, 故,需要使用到三個API。
77.
RepositoryQuery實做- Filter/OrderBy
78.
RepositoryQuery實做- GetWithPaging方法 許多頁面呈現的部份會需要 使用到分頁處理的功能。
79.
Repository的特化 宣告特化的介面,此介面是用來延伸和特殊化針對Customer這個實體 的Repository
80.
實務操作- 複雜查詢 運用IRepositoryQuery的API可以組合出所需要的查詢內容。
81.
Master-Detail的資料處理 在關聯式資料處理中最常也是最麻煩的 莫過於Master-Detail的資料處理。 單靠Repository無法處理這個問題,需要 有一個統一個介面來處理。
82.
UnitOfWork的介面 UnitOfWork的介面僅只有兩個最重要的方法: •SaveChanges •儲存所有資料異動 •Repository •檢索需要的Repository
83.
UnitOfWork實做- 建構子
84.
UnitOfWork實做- 介面方法實做
85.
UnitOfWork實務
86.
Entity Framework效能議題 Entity
Framework是以一種物件導向的 思維在思考物件狀態的保持,其思考領 域迥異於過去資料庫儲存程式。 Entity Framework畢竟是ORM,當然會 帶有ORM與生俱來的效能議題。
87.
預編譯的View Entity Framework允許將View預先編譯 並載入,藉此降低初始化Context的所需 時間。
可以使用EF Power Tool來完成此項功 能。
88.
預編譯的View實做 產生出預編譯View之後再重建整個專案,即可擁有預編譯的效能提升效果
89.
利用Ngen提升效能 EF6支援Ngen。 Ngen是一套用來將組件直接轉譯成原 生碼(Native
Image)的工具。 Native Image帶來的優點: ◦ 節省記憶體空間 ◦ 降低應用程式啟動時間
90.
Native Image對於記憶體的改善 當有多個Process都使用同一個組件時, 若此組件可藉由Ngen產出Native Image,則僅需載入一份Native
Image即 可。
91.
Native Image對於應用程式啟動 的改善 當有多個應用程式都使用到同一個組件 時,若該組件可以被Ngen產出Native Image,則當第一個應用程式啟動完成後, 接下來的應用程式都不需要重覆載入。
92.
NativeImage 移至路徑 產生Img
93.
節制分散式交易 分散式交易對於系統效能來說一直是個 隱憂;對於ORM來說,其傷害更甚。
94.
修改同筆資料的連線控制 同筆資料的修改以物件導向的思考僅需 在物件身上操作即可,不需每一次異動 都更新資料庫。 (X) (O)
95.
只取需要的資料 查詢資料時,記得要下條件式只取得所 需要的資料。 在查詢時以Where篩選資料。
取得資料時可以考慮Select的資料是以 匿名類別取得。
96.
考量是否需要追蹤 容器一旦取得實體後就會進行追蹤,但 是不是每個操作都會需要對取得的實體 進行追蹤;例如一些資料顯示的操作。 IQueryable介面提供AsNotracking
97.
正確的更新/刪除資料 更新/刪除資料可以採用Attach的方式 將實體放入容器中,不需要從資料庫中 取出指定實體再修改/刪除。
98.
Native SQL的適用時機 當處理批次更新或是欲自主控制SQL查 詢陳述句,可以考慮使用Native
SQL。 EF6提供SqlQuery的方法可以將SQL陳 述句字串投入。
99.
Eager v.s. Lazy
共有四種模式: ◦ Explicit Eager Loading ◦ Eager Loading ◦ Explicit Lazy Loading ◦ Lazy Loading
100.
Eager和Explicit Eager Loading
Eager Loading: ◦ 在第一次撈取資料的時候就把Reference的 所有資料也一併載入。 Explicit Loading: ◦ 第一次撈取資料時並不直接也撈取 Reference的資料;當到了要操作Reference 資料時呼叫API顯示載入Reference資料。
101.
Lazy和Explicit Lazy Loading
Lazy Loading: ◦ 當需要使用到Reference資料時才自動載入。 Explicit Lazy Loading: ◦ 當關閉了Entity Framework的Lazy Loading 功能後,可以顯示呼叫API設定Lazy Loading。
102.
Eager/Explicit Eager Loading Eager
Loading Explicit Eager Loading
103.
Lazy和Explicit Lazy Loading Lazy
Loading Explicit Lazy Loading
104.
Eager與Lazy的選擇 Eager是提前將Reference的實體載入 到記憶體中,雖然可以節省與資料庫的 來回時間,但卻會增加容器首次操作的 資源耗用。 Lazy是待需要使用到Reference實體的 時候才會去資料庫取得資料,相較Eager 來說可以在某種程度上降低資源耗用, 但會增加資料庫來回時間。
105.
Proxy物件 Entity Framework為了達成下兩個目的 而自動為實體建立一個Proxy物件: ◦
變更追蹤 ◦ Lazy Loading
106.
產出Proxy物件的基本條件 實體類別的存取子需為Public 實體類別不可宣告為sealed
實體類別不可宣告為abstract 實體類別需有一個public或protected的預 設建構子 實體類別不得實做 IEntityWithChangeTracker或 IEntityWithRelationships介面 容器的ProxyCreationEnabled屬性需設定 為true
107.
產出Lazy Loading Proxy的條件
實體的導覽屬性其存取子需宣告為 public virtual 導覽屬性的get運算子不得宣告為 sealed
108.
產生Change Tracking Proxy的條 件
每一個屬性的存取子都需宣告為 public virtual 每一個屬性都不可宣告為sealed 若導覽屬性是表達many的,其型別需為 實做ICollection<T>的資料型別
109.
Proxy物件的問題 EF創建Proxy物件會損耗系統資源,但 它可以協助追蹤屬性變更並且可以提供 Lazy Loading。 (前題是實體類別的宣告要符合條件)
110.
繼承的架構規劃 共有三種規劃: ◦ TPH(Table
Per Hierarchy) ◦ TPC(Table Per Class) ◦ TPT(Table Per Type)
111.
TPH(Table Per Hierarchy)
資料庫中僅有一張表,該張表擁有所有 子類別的欄位,並使用一個欄位來區分
112.
TPC(Table Per Class)
資料庫僅有子類別的表, 父類別的欄位 會重置在子類別的表中。(PK要能同步)
113.
TPT(Table Per Type)
每個類別都有自己的資料表,子類別將 父類別的PK作為自己的外鍵。
Download now