當前位置:
首頁 > 知識 > EF Core的三種主要關係類型

EF Core的三種主要關係類型

本節導航

  • 三種資料庫關係類型建模
  • Migration方式創建和習修改資料庫
  • 定義和創建應用DbContext
  • 將複雜查詢拆分為子查詢

本章主要介紹如何使用EF Core進行資料庫讀取,俗稱查詢。您將創建一個資料庫,它包含EFCore中三種主要資料庫關係類型。在這個過程當中,你將學會使用EF Core 創建和改變資料庫的結構。

接下來你將學習到如何使用EF Core訪問資料庫並從資料庫表中獲取數據。在查看用主數據載入相關數據的各種方法之前,你將了解EF Core查詢的基本格式。例如,第一章中載入與書關聯的作者。

在學習載入關聯數據之後,你將著手構建更加複雜的查詢,而這些是圖書售賣網站運行起來所必須的。這將涉及到排序,過濾,和分頁,以及將這些單獨的查詢命令組合在一起以創建一個複合資料庫查詢。

2.1 場景設定——我們的圖書銷售網站

本章,你將開始構建一個圖書銷售網站,我們稱之為Book APP。這個應用示例提供了一個非常好的工具來查看查詢中的關係。本節介紹資料庫、各種類以及Book App 訪問資料庫所需的EF Core 部分。


note:你可以在線訪問book app

2.1.1 Book App 相關的資料庫

儘管我們可以把一本書相關的信息,它的作者,評論都創建在一張表中,但是在關係型資料庫中那樣做不會運行良好,尤其是評論欄位的長度是課變的。關係型資料庫範式會將重複數據拆分(比如,authors表)。

我們有幾種方式可以把圖書的數據各個部分在資料庫中分類(存儲),但是對於本例,資料庫具有EF-Core關係中每種主要關係類型中的一種。這三種類型是:

  • 一對一關係:PriceOffer to a Book
  • 一對多關係:Reviews to a Book
  • 多對多關係:Books to Authors

一對一關係:PriceOffer to a Book

一本書會有一個促銷價格。這是通過在PriceOffer*實體類增加一個可選欄位實現的,這是一個一對一關心的例子(從技術上講,它是一對零或一關係,但是EF Core對它們的處理時一樣的)。請看圖2.1

EF Core的三種主要關係類型

為了計算這本你圖書的最終價格,你需要檢查PriceOffer表的一行數據,它們是通過外鍵關聯的。如果這行被查到有數據,NewPrice欄位的數據將被查到的價格替代,PromotionalText的值將會在屏幕上顯示,比如:

$40 $30 Our summertime price special, for this week only!

一對多關係:Reviews TO A Book

你允許用戶對圖書予以評論。他們可以給書評星級並能隨意評論。因為一本書可以有零個或多個(不限制數量)評論,你需要創建一個表來存儲上這些數據。本示例中,這張表可以命名為ReviewBooks表相對於Review表是一對多的關係。如下圖2.2所示:

EF Core的三種主要關係類型

你需要在摘要顯示中,您需要計算評論的數量並計算出平均星級,以顯示摘要。例如,這裡有一個典型的屏幕顯示,你可能從這一對多的關係中產生,如下:


Votes 4.5 by 2 customers

多對多關係: BOOKS TO AUTHORS

圖書可以被一名或者多名寫作,一個作者可以些一本或多本圖書。因此,需要一張Books表來存儲書本數據,另一張表Authors存儲作者數據。Books表和Authors表之間鏈接的表稱為鏈接表。

EF Core的三種主要關係類型

此關係的典型屏幕顯示如下


by Dino Esposito, Andrea Saltarello

2.1.2 本章未涉及的其他關係類型

在EF Core中,你可以定義一個實體類,而這個是實體類繼承自另一個實體類。例如,你可以定義PriceOffer繼承至BooK.那樣會獲得和此前一對一關係一樣的結果。EFCore通過每個層次結構一個表(TPH)的模式實現,這個在第七章會涉及到。

另外i一種關係類型是分層關係:一組數據項通過層次結構相互關聯。一個典型的實例是Employee類。它有一個指向員工經理的關係,而經理反過來又是員工(注:這種關係可能叫自關聯)。

EF Core使用與一對一和一對多相同的方法來提供層次關係。在第七章,我會更多談論這個關係,在那裡,我會解釋如何配置。

2.1.3 最終的資料庫展示所有表

圖2.4 展示了Book App的資料庫,這個資料庫將用於本章和第三章的實例。它包含所有已描述的表,包括完整的books表中所有列的定義

NOTE:


這個資料庫關係圖使用了和第一章相同的布局和術語。PK表示主鍵,FK表示外鍵。

EF Core的三種主要關係類型

為了幫助你理解這個資料庫,圖2.5展示了輸出到屏幕的圖書列表,但是請將目光聚焦到一本書上。

EF Core的三種主要關係類型

2.1.4 EF Core映射到資料庫的類

我創建了5個能夠映射到資料庫中五個表的類。它們是Book,PriceOffer,Review , Author,BookAuthor是多對多關係表。

這些類被稱為實體類,以表明它們被EF Core映射到了資料庫。從軟體視角,這些類沒有什麼特別之處。它們是常規的.NET類,有時被稱為簡單傳統 CLR 對象(Plain Old CLR Object / POCO)。實體類標誌著這個類是EF Core映射到資料庫的類。

主實體類是Book類,如下展示。你可以看到,它關聯了一個實體類PriceOffer,一個Review實體類的集合和BookAuthor實體類的集合。BooKAuthor將Book類鏈接到一個或多個Author.

為了簡單起見,我們使用ef core的契約配置方法對資料庫建模。我們使用EF Core按照慣例來命名實體類的主鍵和外鍵的屬性。此外,.net 的導航屬性,例如ICollection Reviews,定義了我們想要的關係類型。例如,Reviews屬性的類型是ICollection,這個關係是一對多關係。第6章和第7章描述了其它方式來定義EF Core的資料庫模型。

EF Core的三種主要關係類型

作者:

原文:https://www.cnblogs.com/lucky_hu/p/10424676.html

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

MySql 優化 group by 語句
使用LMAX/Disruptor構建高擴展性的交易引擎的經驗分享

TAG:程序員小新人學習 |