SlideShare a Scribd company logo
1 of 113
Entity Framework實戰
大綱
 ORM/OAM
 Entity Framework介紹
 EF的三種開發模式
 實體模型設計器
 CRUD
 EF6的新功能
 Repository/Unit Of Work模式
 效能考量
ORM
 解決物件導向與關聯式資料庫阻抗不匹
配的問題。
 它就像是物件導向系統中的虛擬資料庫。
ORM帶來的好處
 加速開發
◦ 避開不純熟的SQL造成效能低落
 降低開發時程
◦ 減少重覆資料處理初始化程式碼
 降低開發成本
◦ 得到物件導向開發的優點
 兼容各品牌的關聯式資料庫
◦ 各品牌資料庫的完成的SQL標準程度不一,
並且有自己的客製化。
ORM的缺點
 效能不佳
 無法直接控制SQL語法
OAM?
 ORM的R字母代表的是Relational,其指
的是關聯式資料庫。
 關聯式資料庫是儲存資料的一種方式,
但不是全部情境都適用。
 OAM的A字母代表的是: Any!
近代資料存取
SQL
NoSQL
依資料特性寫到適合
的資料儲存系統
依資料特性從適合的
資料儲存系統取出
SQL與NoSQL之間已不再是零和遊戲
Entity Framework介紹
 Entity Framework是微軟公司自行開發
的一套ORM框架,目前已將源始碼開放
出來了。
 Entity Framework目前常以EF縮寫代替。
 Entity Framework是奠基於ADO.Net
2.0 Provider模型之上。
EF應用上的概觀圖
EF內部細節的概觀圖
操作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
結構描述
 CSDL
◦ 概念模型;主要是偏向物件導向系統的觀點
 MSL
◦ 對映概念上定義的項目與實體儲存的項目
 SSDL
◦ 實體儲存模型;與實際上使用的儲存系統所
使用的資料定義較貼近
用戶檢視引擎
(Client View Engine)
 當MSL編譯過後會產生出一個查詢/更
新檢視。
 用戶檢視引擎會使用這些檢視來正反兩
個方向轉換開發人員定義的概念性結構
與實體儲存結構。
(其實就是一個Parser+Converter)
物件服務(Object Service)層
 為開發人員簡化物件在記憶體中變更的
追蹤。(利用ObjectStateManager)
 簡化將變更存回到資料庫的過程。
 物件服務接收ESQL/Linq並將標準命令
樹(CCT)所產生的運算式傳遞給
EntityClient執行。
EF的三種開發模式
 資料庫先行
 模型先行
 程式碼先行(Existing Db)
新DB
舊DB
Model First
• 使用實體設計工具建立模型
• DB是依模型建構而成
• POCO也是依模型產生
Code First(新DB)
• 使用類別來對應資料表
• DB是依類別建構而成
• 使用Migration來演化DB
Database First
• 使用實體設計工具以逆向工
程的方式建立模型
• POCO依模型自動產生
Code First(舊DB)
• 使用類別來對應資料表
• 可使用逆向工程的工具
來輔助建立POCO
DataBase First建立步驟(1)
 利用實體模型建立精靈建立實體模型
DataBase First建立步驟(2)
 選擇由資料庫產生
DataBase First建立步驟(3)
 建立連線字串
DataBase First建立步驟(4)
 確認產生的連線字串與組態設定
DataBase First建立步驟(5)
 選取要映射的資料庫項目
實體模型設計器
模型關聯圖
對應詳細資料
模型瀏覽器
專有名詞
 實體(Entity)
 複雜型別
(Complexity Type)
 列舉(Enum)
 關聯(Relation)
 函式(Function)
 容器(Containter)
實體(Entity)
 類別: 物件的藍圖,亦是一般性觀點。
 實體: 具有商業邏輯和系統資訊的物件,
並且可被識別。
複雜型別
 用於函數/預存程序的輸出/入參數。
 物件導向觀點中的:
◦ Use
◦ 聚合
列舉
 整數型欄位的值域限制
函數
 資料庫中宣告的函數或預存程序
容器(Container)
 依特定存取規則有組織地儲存其它物件。
 容器的三個要點:
◦ 存取
◦ 儲存
◦ 檢索
MetaData檔案
如何檢示MetaData
如何自動產生POCO?
 T4(Text Template
Transformation
Toolkit)
 一個文字範本,在範
本中可以透過程式
碼與邏輯來決定要
嵌入那些文字。
組態
 connectionStrings
 entityFramework
◦ defaultConnectionFa
ctory
 provider
App.config的內容
組態:
DefaultConnectionFactory
 當組態檔中沒有設定連線字串時,EF會
自動使用指定的
DefaultConnectionFactory
 若沒有設定連線字串也沒有設定
DefaultConnectionFactory,則使用程式
碼優先開發(Code First)會自動套用:
組態:Provider
 組態有兩個重要的參數:
◦ InvariantName: Provider的唯一識別名稱
◦ Type: Provider組件的完整命名空間
CRUD
 Entity Framework的Container已經封裝
了許多資料存取上的細節,讓資料存取
的操作變得單純。
新增Customer
 新增操作有兩個要
點:
◦ 實體的Add方法
◦ 容器的SaveChange
方法
檢索Customer相關資料
 檢索所使用的是
Linq的API,需熟悉
Linq操作才能瞭解
如何正確取得所需
要的資料。
更新Customer
 更新的處理極其簡
單,其原因是Entity
Framework會自動
追蹤實體是否有被
修改,只要任一屬性
被異動馬上會被查
覺,當呼叫
SaveChange時,會
自動更新資料庫中
資料。
刪除Customer
 刪除實體與新增實
體的作法極其類似,
唯一差別僅在呼叫
的容器方法
為:Remove;除此之
外,在最後仍是需要
呼叫容器的
SaveChange方法
來提交變更。
CRUD的Pitfull
 DateTime的預設值
 資料欄位預設值
 不同的SQL Server版本
 逾時
 甲租乙還
 局部更新
DateTime的預設值
 .Net系統的DateTime型別與資料庫的
型別對應是DateTime2。
 若資料表設定是使用DateTime,則需要
在程式中特別設定DateTime型別的屬
性值,否則會引發Exception。
資料欄位預設值
若沒有特別指定,則無法套用預設值
SQL Server版本不同
當正式環境與測試環境的資料庫版本不同
時, 需調整SSDL中的
ProviderManifestToken屬性的值。
範例: 若是SQL Server 2005版本,則直接修改值為2005
甲租乙還
 由於Container具有
追蹤的特性,若甲容
器的實體沒有切斷
連結就在乙容器中
進行存取操作,會發
生例外。
甲
乙
僅更新某個欄位
 欲指定某個欄位更新,可針對對該實體的
IsModifed屬性設定為true即可。
EF6增加的新功能
 EF6大幅提升效能,與過去不同的是,視
圖引擎不再是隨需產生,而是事先產生
再鏈結,如此一來減少了暖啟動時間。
EF6中較大的更新
 支援Async/Await模式
 基於程式碼的組態設定
 連線的可適性
 攔截器
 重覆使用同一個Connection物件
 重覆使用同一個交易物件
 提供批次新增/刪除的方法
提供Async/Await模式
基於程式碼的組態設定
 擺脫過去組態設定
的束縛,讓組態設定
可以自由化。
連線的可適性
 提供四種處理連線不穩定的策略:
◦ DefaultExcutingStrategy(預設)
◦ DefaultSqlExcutionStrategy
◦ DbExecutionStrategy
◦ SqlAcureExecutionStrategry
設定連線策略
欄截器
攔截器的方法
方法 意義 ADO.Net對應方法
NonQueryExecuting 在執行資料異動前被呼叫 ExecuteNonQuery
NonQueryExecuted 在執行資料異動後被呼叫 ExecuteNonQuery
ReaderExecuting 在執行查詢前被呼叫 ExecuteReader
ReaderExecuted 在執行查詢後被呼叫 ExecuteReader
ScalarExecuting 在執行單物件查詢前被呼叫 ExecuteScalar
ScalarExecuted 在執行單物件查詢後被呼叫 ExecuteScalar
藉由攔截器來實現OAM-
從Nuget安裝套件
藉由攔截器來實現OAM-
宣告Log類別
藉由攔截器來實現OAM-
撰寫Interceptor
藉由攔截器來實現OAM-
Interceptor的建構子
藉由攔截器來實現OAM-
NonQueryExecuted實做
藉由攔截器來實現OAM-
容器的建構子中註冊Interceptor
從MongoDb觀察紀錄
重覆使用同一個連線物件
舊版的Entity Framework在SaveChanges之後就會關閉連線,但現在
已經可以重覆開啟與關閉。
重覆使用同一個交易物件
重用已開啟的連線/交易物件
 實務上,有可能會需要重用連線與交易
物件。
 通常會應用在跨資料庫的分散式交易。
調整容器的建構子
分散式交易
批次新增/刪除
Repository樣式
 Repository一如其名:倉儲。其目的在於
封裝資料存取的細節。
 Repository實做上多會搭配介面以利各
種物件導向操作。
繼承與封裝
 Repository的目的就在於封裝,其封裝的
程度依系統的複雜度而定。
 在經過一段時間後可以發現到系統存取
的通用方法,至此可以考慮抽象化並將
通用方法取出。
常用到的方法
方法 輸入參數 意義
GetAll 無 取得全部資料
GetBy PK欄位 依PK取得資料
Insert 實體 新增
AddRange 實體集合 批次新增
Update 實體 更新
Delete 實體 刪除
DeleteBy PK欄位 依PK刪除
RemoveRange 實體集合 批次刪除
Filter Lambda陳述式 篩選多筆資料
OrderBy Lambda描述式 排序資料
GetWithPagig 啟,迄 分頁
Repository介面
一般操作介面
查詢介面
Repository實做-
建構子
Repository實做-
GetAll屬性
以屬性的方式操作GetAll其優點在於可以省去打小括弧。
Repository實做-
GetBy
DbSet此型別所提供的Find方法極為強大;當容器中已存在指定的
實體時,Find方法會直接從容器取出而不會連線到資料庫下命令,如
此一來便能大幅減少效能的損耗。
Repository實做-
Insert/AddRange
新增方面的操作都相對簡單
Repository實做-
Update
更新的處理重點在於Attach這個部份,其餘相對簡單
Repository實做-
刪除
刪除的操作多樣性比較高,
故,需要使用到三個API。
RepositoryQuery實做-
Filter/OrderBy
RepositoryQuery實做-
GetWithPaging方法
許多頁面呈現的部份會需要
使用到分頁處理的功能。
Repository的特化
宣告特化的介面,此介面是用來延伸和特殊化針對Customer這個實體
的Repository
實務操作-
複雜查詢
運用IRepositoryQuery的API可以組合出所需要的查詢內容。
Master-Detail的資料處理
 在關聯式資料處理中最常也是最麻煩的
莫過於Master-Detail的資料處理。
 單靠Repository無法處理這個問題,需要
有一個統一個介面來處理。
UnitOfWork的介面
UnitOfWork的介面僅只有兩個最重要的方法:
•SaveChanges
•儲存所有資料異動
•Repository
•檢索需要的Repository
UnitOfWork實做-
建構子
UnitOfWork實做-
介面方法實做
UnitOfWork實務
Entity Framework效能議題
 Entity Framework是以一種物件導向的
思維在思考物件狀態的保持,其思考領
域迥異於過去資料庫儲存程式。
 Entity Framework畢竟是ORM,當然會
帶有ORM與生俱來的效能議題。
預編譯的View
 Entity Framework允許將View預先編譯
並載入,藉此降低初始化Context的所需
時間。
 可以使用EF Power Tool來完成此項功
能。
預編譯的View實做
產生出預編譯View之後再重建整個專案,即可擁有預編譯的效能提升效果
利用Ngen提升效能
 EF6支援Ngen。
 Ngen是一套用來將組件直接轉譯成原
生碼(Native Image)的工具。
 Native Image帶來的優點:
◦ 節省記憶體空間
◦ 降低應用程式啟動時間
Native Image對於記憶體的改善
 當有多個Process都使用同一個組件時,
若此組件可藉由Ngen產出Native
Image,則僅需載入一份Native Image即
可。
Native Image對於應用程式啟動
的改善
 當有多個應用程式都使用到同一個組件
時,若該組件可以被Ngen產出Native
Image,則當第一個應用程式啟動完成後,
接下來的應用程式都不需要重覆載入。
NativeImage
移至路徑
產生Img
節制分散式交易
 分散式交易對於系統效能來說一直是個
隱憂;對於ORM來說,其傷害更甚。
修改同筆資料的連線控制
 同筆資料的修改以物件導向的思考僅需
在物件身上操作即可,不需每一次異動
都更新資料庫。
(X) (O)
只取需要的資料
 查詢資料時,記得要下條件式只取得所
需要的資料。
 在查詢時以Where篩選資料。
 取得資料時可以考慮Select的資料是以
匿名類別取得。
考量是否需要追蹤
 容器一旦取得實體後就會進行追蹤,但
是不是每個操作都會需要對取得的實體
進行追蹤;例如一些資料顯示的操作。
 IQueryable介面提供AsNotracking
正確的更新/刪除資料
 更新/刪除資料可以採用Attach的方式
將實體放入容器中,不需要從資料庫中
取出指定實體再修改/刪除。
Native SQL的適用時機
 當處理批次更新或是欲自主控制SQL查
詢陳述句,可以考慮使用Native SQL。
 EF6提供SqlQuery的方法可以將SQL陳
述句字串投入。
Eager v.s. Lazy
 共有四種模式:
◦ Explicit Eager Loading
◦ Eager Loading
◦ Explicit Lazy Loading
◦ Lazy Loading
Eager和Explicit Eager Loading
 Eager Loading:
◦ 在第一次撈取資料的時候就把Reference的
所有資料也一併載入。
 Explicit Loading:
◦ 第一次撈取資料時並不直接也撈取
Reference的資料;當到了要操作Reference
資料時呼叫API顯示載入Reference資料。
Lazy和Explicit Lazy Loading
 Lazy Loading:
◦ 當需要使用到Reference資料時才自動載入。
 Explicit Lazy Loading:
◦ 當關閉了Entity Framework的Lazy Loading
功能後,可以顯示呼叫API設定Lazy
Loading。
Eager/Explicit Eager Loading
Eager Loading
Explicit
Eager Loading
Lazy和Explicit Lazy Loading
Lazy Loading
Explicit Lazy
Loading
Eager與Lazy的選擇
 Eager是提前將Reference的實體載入
到記憶體中,雖然可以節省與資料庫的
來回時間,但卻會增加容器首次操作的
資源耗用。
 Lazy是待需要使用到Reference實體的
時候才會去資料庫取得資料,相較Eager
來說可以在某種程度上降低資源耗用,
但會增加資料庫來回時間。
Proxy物件
 Entity Framework為了達成下兩個目的
而自動為實體建立一個Proxy物件:
◦ 變更追蹤
◦ Lazy Loading
產出Proxy物件的基本條件
 實體類別的存取子需為Public
 實體類別不可宣告為sealed
 實體類別不可宣告為abstract
 實體類別需有一個public或protected的預
設建構子
 實體類別不得實做
IEntityWithChangeTracker或
IEntityWithRelationships介面
 容器的ProxyCreationEnabled屬性需設定
為true
產出Lazy Loading Proxy的條件
 實體的導覽屬性其存取子需宣告為
public virtual
 導覽屬性的get運算子不得宣告為
sealed
產生Change Tracking Proxy的條
件
 每一個屬性的存取子都需宣告為
public virtual
 每一個屬性都不可宣告為sealed
 若導覽屬性是表達many的,其型別需為
實做ICollection<T>的資料型別
Proxy物件的問題
 EF創建Proxy物件會損耗系統資源,但
它可以協助追蹤屬性變更並且可以提供
Lazy Loading。
(前題是實體類別的宣告要符合條件)
繼承的架構規劃
 共有三種規劃:
◦ TPH(Table Per Hierarchy)
◦ TPC(Table Per Class)
◦ TPT(Table Per Type)
TPH(Table Per Hierarchy)
 資料庫中僅有一張表,該張表擁有所有
子類別的欄位,並使用一個欄位來區分
TPC(Table Per Class)
 資料庫僅有子類別的表, 父類別的欄位
會重置在子類別的表中。(PK要能同步)
TPT(Table Per Type)
 每個類別都有自己的資料表,子類別將
父類別的PK作為自己的外鍵。

More Related Content

What's hot

ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのかネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのかJun Kato
 
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話Wataru Unno
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話Masaru Oki
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Kentaro Yoshida
 
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法シスコシステムズ合同会社
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi ShinodaInsight Technology, Inc.
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編hiboma
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons LearnedDaiki Kawanuma
 
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違いApexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違いYoshinari KUWAYAMA
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオActive Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオjunichi anno
 
軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門Kentaro Masumori
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜gree_tech
 
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法Kazuhiko Nakamura
 

What's hot (20)

DocuWorks 7
DocuWorks 7DocuWorks 7
DocuWorks 7
 
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのかネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
 
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
 
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
 
AWS Systems manager 入門
AWS Systems manager 入門AWS Systems manager 入門
AWS Systems manager 入門
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
 
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違いApexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違い
 
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
Active Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオActive Directory をInternetから使用するための4つのシナリオ
Active Directory をInternetから使用するための4つのシナリオ
 
軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門軽くRDB再入門とGraph DB 入門
軽くRDB再入門とGraph DB 入門
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法
 

Viewers also liked

Entity framework 與 LINQ
Entity framework 與 LINQEntity framework 與 LINQ
Entity framework 與 LINQSean Lu
 
Entity framework 入門第一課
Entity framework 入門第一課Entity framework 入門第一課
Entity framework 入門第一課Sean Lu
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server國昭 張
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2Duran Hsieh
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletJustin Lin
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練12015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1Duran Hsieh
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練42015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4Duran Hsieh
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹Alan Tsai
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performancerudib
 
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手Will Huang
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練62016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6Duran Hsieh
 

Viewers also liked (15)

Entity framework 與 LINQ
Entity framework 與 LINQEntity framework 與 LINQ
Entity framework 與 LINQ
 
Entity framework 入門第一課
Entity framework 入門第一課Entity framework 入門第一課
Entity framework 入門第一課
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
Linq實戰
Linq實戰Linq實戰
Linq實戰
 
Linq初階
Linq初階Linq初階
Linq初階
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練12015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練42015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹Asp.net mvc 概觀介紹
Asp.net mvc 概觀介紹
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performance
 
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
 
Mvc architecture
Mvc architectureMvc architecture
Mvc architecture
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練62016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練6
 

Similar to Entity Framework實戰

Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
Sql Alchemy Story
Sql Alchemy StorySql Alchemy Story
Sql Alchemy StoryZoom Quiet
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)wangjiaz
 
Yii2 restful 基礎教學
Yii2 restful 基礎教學Yii2 restful 基礎教學
Yii2 restful 基礎教學Duncan Chen
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
Struts学习笔记
Struts学习笔记Struts学习笔记
Struts学习笔记yiditushe
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍Ethan M. Liu
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2Duran Hsieh
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿yiditushe
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptjames tong
 
通过Struts构建Web应用
通过Struts构建Web应用通过Struts构建Web应用
通过Struts构建Web应用yiditushe
 
资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈yiditushe
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review郁萍 王
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料yiditushe
 

Similar to Entity Framework實戰 (20)

Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
Sql Alchemy Story
Sql Alchemy StorySql Alchemy Story
Sql Alchemy Story
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
 
Yii2 restful 基礎教學
Yii2 restful 基礎教學Yii2 restful 基礎教學
Yii2 restful 基礎教學
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
Struts学习笔记
Struts学习笔记Struts学习笔记
Struts学习笔记
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
 
通过Struts构建Web应用
通过Struts构建Web应用通过Struts构建Web应用
通过Struts构建Web应用
 
资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
Code guidelines
Code guidelinesCode guidelines
Code guidelines
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料
 

More from 國昭 張

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th 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 architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture國昭 張
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1國昭 張
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺國昭 張
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模國昭 張
 
Scrum essential
Scrum essentialScrum essential
Scrum essential國昭 張
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討國昭 張
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計國昭 張
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0國昭 張
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js國昭 張
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 

More from 國昭 張 (20)

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th 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 architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模
 
單元測試
單元測試單元測試
單元測試
 
Docker實務
Docker實務Docker實務
Docker實務
 
Scrum essential
Scrum essentialScrum essential
Scrum essential
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Vue
VueVue
Vue
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
DDD引導
DDD引導DDD引導
DDD引導
 
前端測試
前端測試前端測試
前端測試
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
React js
React jsReact js
React js
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 

Entity Framework實戰