《你必須掌握的Entity Framework 6.x與Core 2.0》書籍出版

前言

到目前爲止寫過恰好兩百來篇博客,看過我博客的讀者應該大概知道我每一篇博客都沿襲着一向的套路,從前言到話題最終到總結,本文依然是一如既往的套路,可是不是介紹技術,也可說是介紹技術,不過是介紹書中的技術以及我對寫做的態度,做爲對本書的宣傳,本書在最近即將出版,到時會在博客公告欄中放出購買連接。git

寫做初衷

以前有過出版社的編輯找我寫書,我當時看了看也沒回復最終固然也就是不了了之了,最主要的是以爲本身資歷尚淺,寫書和寫博客有很大不一樣,寫博客在言語上能夠略微隨意,而寫書須要的是嚴謹同時在表達上也應言簡意賅,後來怎麼又寫上了呢,看了看本身寫的博客當屬EF最多,記得在我初次學習EF時,我還特地搜索了下有沒有相關中文的書籍做爲參考資料,然而幾乎一本都沒有,後來我只能看看園中前輩們的博客和老外的文章來學習,最終也就寫了一部分不算完整的EF系列,這個時候我想到是否是能夠寫一本EF 6.x和EF Core 2.0的書籍呢?做爲EF 6.x和EF Core 2.0系統性學習的參考資料,若能幫助到初學和想繼續深刻的同行將再好不過了,也算是我對.NET做出的一份努力,同時也但願經過本書讓您從新拾起對EF和EF Core的正確認知。github

寫做態度

從選題材到寫完書大概耗時半年多的時間,在寫EF篇章時腳步稍微快些,由於以前寫過,只是在其過程當中EF更新了一點點內容就花了一點時間去看文檔,因此相對來講比較熟練一點,到了EF Core篇章腳步放緩了不少,雖然我也有寫過,可是還不夠深刻,因此至關於寫本書我從頭又學習了EF和EF Core並深刻探索到一些鮮爲人知的祕密。寫完後不久就開始了審稿,接着編輯那邊將問題統一概括交由我修改,同時我也秉着對本身負責和對讀者負責的態度認真去修正文檔中的錯誤,絲絕不敢懈怠,修改了有問題的地方以及添加了部份內容,都是在凌晨發給了編輯(【捂臉】),在這裏要對編輯說聲抱歉。如下是我從寫做開始到書正式出版的詳細記錄。數據庫

你必須掌握的Entity Framework 6.x和Core 2.0

書籍名稱如博客標題所言,您也可將本書看作是您所不知道的Entity Framework 6.x和 Core 2.0,好比您是否知道EF 6.0如何建立索引呢?好比您又是否知道在EF 6.x中如何正確更新數據呢?好比您又是否知道在EF Core中何種狀況下即經過lambda表達式使用Include來進行飢餓加載很差使呢?好比您又是否知道在EF Core中經過Find或者FindAsync方法如何進行飢餓加載呢?好比您又是否知道EF Core上下文實例池本質是什麼呢?這樣的疑問還有太多太多,本書如管中窺豹,帶您一探究竟。本書既面向基礎學習者也面向進階學習者,不管您是自學仍是在項目中用到了EF 6.x抑或是EF Core 2.0,本書將對您或許有必定幫助。緩存

推薦致謝

只見過張善友大哥,與其餘幾位大佬素未謀面,不知是否可以獲得大佬們的承認,懷着忐忑的心情去找大佬們寫推薦,結果大佬們很快寫完就交給我了,在此表示感謝,感謝dudu老大、何鎮汐大哥,張善友大哥,趙培(好基友),鄒瓊俊大哥,感謝大佬們在百忙之中抽空爲本書作推薦,感謝大佬們對本書的承認和支持。這裏額外打個小廣告:何鎮汐大哥現做爲.NET Core中國社區項目成員之一,以一己之力開發.NET Core平臺下的應用框架(https://github.com/dotnetcore/Util),感謝何鎮汐大哥對.NET Core所做出的貢獻,同時也期待有志之士可以參與進來。性能優化

寫做目錄

第一篇 1
第 1 章 7
EntityFramework歷史 7
1.1 EntityFramework版本介紹 7
1.2 EntityFramework 領域建模方式 9
1.2.1 Code First 9
1.2.2 Model First 10
1.2.3 Database First 10
1.3 使用EntityFramework Code First 6.x 或Core 2.0的緣由 10
1.4 小結 11
第 2 章 12
數據庫表建立和遷移 12
2.1 數據庫鏈接和初始化策略 12
2.1.1 數據庫鏈接 12
2.1.2 數據庫初始化策略 15
2.2 約定 17
2.2.1 類型發現 17
2.2.2 主鍵約定 17
2.2.3 關係約定 19
2.2.4 複雜類型約定 20
2.2.5 自定義約定 21
2.3 基於代碼配置(Code-based Configuration Settings) 29
2.4 配置屬性映射和關係映射 32
2.4.1 屬性映射 32
2.4.2 關係映射 50
2.4.3 私有化屬性映射 67
2.5 繼承映射策略 69
2.5.1 Table per Hierarchy (TPH) 70
2.5.2 Table per Type (TPT) 70
2.5.3 Table per Concrete class (TPC) 73
2.5.4 Entity Splitting 77
2.5.5 Table Splitting 80
2.6 代碼遷移 82
2.6.1 遷移命令 82
2.6.2 遷移本質 91
第 3 章 102
實體狀態和數據操做 102
3.1 實體狀態 102
3.2 數據操做 105
3.2.1 數據查詢 105
3.2.2 數據保存 124
3.2.3 自動生成存儲過程 135
3.3 避免陷阱
3.3.1 導航屬性查詢
3.3.2 分頁查詢
3.3.3 語義可空
3.3.4 表值函數
3.3.5 日期操做
3.4 基礎篇實戰 138
3.4.1 複雜屬性做爲JSON存儲數據庫表列 138
第二篇 153
第 4 章 155
上下文管理和變動追蹤原理 155
4.1 上下文生命週期管理 155
4.1.1 基礎模式追溯 155
4.1.2 生命週期追溯 157
4.1.3 進化模式追溯 160
4.2 變動追蹤原理 163
4.2.1 快照式變動追蹤(Snapshot based Change Tracking) 163
4.2.2 代理式變動追蹤(Notification based Change Tracking with Proxies) 165
第 5 章 175
變動追蹤原理和日誌管理 175
5.1 DetectChanges原理 175
5.1.1 DetectChanges用途 175
5.1.2 調用DetectChanges方法時機 177
5.1.3 關閉自動調用DetectChanges方法 180
5.1.4 遺忘的二進制屬性和複雜類型 182
5.2 日誌記錄 186
5.2.1 ToString打印 186
5.2.2 簡單日誌打印 187
5.2.3 結構化日誌輸出 190
5.2.4 構造塊攔截 192
5.2.5 攔截器異常性能監控 197
5.2.6 攔截器解決EF 6.1忽略字符串空格歷史遺留問題 211
5.3 事務 215
5.4 鏈接彈性 240
第 6 章 246
併發衝突 246
6.1 初級版解析 246
6.2 中級版解析 252
6.2.1 客戶端獲勝 253
6.2.2 數據庫獲勝 254
6.2.3 客戶端和數據庫合併獲勝 255
6.3 高級版解析 256
6.3.1簡單重試策略 257
6.3.2 Polly重試策略 257
第 7 章 262
性能優化實踐 262
7.1 優化一:預編譯視圖 262
7.2 優化二:減小首次與數據庫交互代碼 266
7.3 優化三:NGen安裝EntityFramework程序集 269
7.4 優化四:AsNoTracking 271
7.5 優化五:DbFunctions/SqlFunctions 271
7.6 優化六:緩存 276
7.7 優化七:從新編譯查詢 282
7.8 優化八:避免’N+1’ Select查詢 287
7.9 優化九:添加索引 289
7.10 優化十:關閉回調DetectChanges方法 293
7.11 優化十一:使用異步查詢 296
第 8 章 297
EntityFramework 6.x實戰 297
8.1 工做單元泛型倉儲模式(Generic Repository and a Unit of Work) 297
8.2 依賴注入泛型倉儲模式(Generic Repository Pattern and Dependency Injection) 321
第三篇 338
第 9 章 340
數據庫表建立和遷移 340
9.1 數據庫初始化策略 340
9.2 配置屬性映射和關係映射 344
9.2.1 屬性映射 345
9.2.2 Backing Fields 357
9.2.3 Alternate Keys 362
9.2.4. Shadow Property 363
9.2.5 Owned Entities 368
9.2.6 HasQueryFilter 369
9.2.7 關係映射 371
9.2.8 繼承映射 393
9.3 代碼遷移 398
9.3.1 控制檯程序遷移 398
9.3.2 Web應用程序遷移 400
9.3.3 多個上下文遷移 413
9.3.4 腳手架逆向遷移 417
第 10 章 422
數據操做和初始化數據 422
10.1 實體狀態 422
10.2 數據操做 423
10.2.1 數據查詢 423
10.2.2 數據保存 446
10.3 無鏈接實體 452
10.4 初始化數據 455
第四篇 459
第 11 章 461
性能優化實踐 461
11.1 AsNoTracking 461
11.2 EF.Functions.Like 463
11.3 自定義標量函數 466
11.4 顯式編譯查詢 470
11.5 上下文實例池 473
第 12 章 479
查詢實體元數據和模型數據驗證 479
12.1 查詢元數據 479
12.2 內置模型驗證 481
12.3 第三方擴展模型驗證 484
第 13 章 488
上下文實例建立方式 488
13.1 顯式建立上下文實例 488
13.1.1 帶有構造函數的OnConfiguring方法 488
13.1.2 傳遞鏈接字符串參數到構造函數 489
13.1.3 使用不帶依賴注入的DbContextOptions 489
13.2 依賴注入容器建立上下文實例 490
13.2.1 帶有無參構造函數的DI 490
13.2.2 帶DbContextOptions的DI 491
13.3.3 使用泛型DbContextOptions 491
13.3.4 使用AddDbContext/AddDbContextPool 492
第 14 章 494
實現多租戶 494
第 15 章 504
捕獲審計數據 504
第 16 章 510
變動追蹤策略和日誌管理 510
16.1 變動追蹤策略 510
16.1.1 INotifyPropertyChanged 511
16.1.2 INotifyPropertyChanging 514
16.2 日誌管理 516
16.2.1 添加控制檯包輸出 516
16.2.2 自定義日誌輸出 517
第 17 章 521
xUnit單元測試 521
17.1 控制檯單元測試 522
17.2 NET Core Web應用程序單元測試 524
第 18 章 527
事務和併發衝突 527
18.1 事務 527
18.2 併發衝突 533
18.2.1 初級版解析 534
18.2.2 中級版解析 538
18.2.3 高級版解析 543
第 19 章 550
EntityFramework Core 2.1待發布 550
19.1 新特性實現目標 550併發

總結 

本書是我所理解的EF 6.x和EF Core 2.0,也有我我的的一些思考,若本書可以對您有所幫助,那麼如我寫博客同樣成就感就在於此了,期待本書可以獲得您的承認,我會一如既往和你們分享我所得。框架

購買通知

下個月可正式購買此書,我將在博客公告欄中標明購買連接,請你們耐心等待,謝謝。異步

相關文章
相關標籤/搜索