日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景

發(fā)布時間:2024/4/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Entity Framework Core in Action

Entityframework Core in action是 Jon P smith 所著的關于Entityframework Core 書籍。原版地址. 是除了官方文檔外另一個學習EF Core的不錯途徑, 書中由淺入深的講解的EF Core的相關知識。因為沒有中文版,所以本人對其進行翻譯。 預計每兩天一篇更新 PS: 翻譯難免限于本人水平有不準確的地方,建議英文水平不錯的同學直接查看原版,有不足的地方歡迎指正

第一部分目錄導航

假設場景 -- 圖書銷售網站

在本章中你會構建一個圖書銷售網站示例,稱之為圖書應用程序. 這個示例應用程序幫助我們查看查詢中的關系. 本節(jié)中介紹了圖書應用程序所需的數(shù)據庫與EF Core的實體類部分

  • 這里是圖書應用程序的運行實例 http://efcoreinaction.com

圖書應用程序的關系型數(shù)據庫

雖然我們可以將作者,書,評論等所有數(shù)據都放到一張表中,但在關系型數(shù)據庫中這樣設計是很糟糕的,關系型數(shù)據庫的規(guī)范是分離重復的數(shù)據,例如作者

我們有多種方式在數(shù)據庫設計圖書數(shù)據的各種部分,在本例中的數(shù)據庫具有EF Core的主要關系類型,分別是以下三種:

  • 一對一的關系: 書與優(yōu)惠價格
  • 一對多的關系: 書與評價
  • 多對多的關系: 書與作者

一對一的關系: 書與價格

一個書可以有促銷價格,這通過PriceOffers表的一個可選行實現(xiàn)的,這是一個一對一的例子(從技術來講,這是一個1-0或1的關系,不過EF Core的處理方式是一樣的);參見圖2.1

The PriceOffers table has a foreign key that links to the books table's primary key

  • PriceOffers表有一個連接到books表主鍵的外鍵

EF Core uses its conventions to detect that this is a one-to-one relationship. It therefore adds a unique index to the foreign key to ensure that there can only be one per book

  • EF Core使用它的約定來檢測這是一個一對一的關系,因此它為外鍵添加了唯一索引,確保每本書只能有一個優(yōu)惠價格

計算圖書的最終價格,需要通過外鍵找到與圖書鏈接的優(yōu)惠價格記錄. 如果找到了記錄,NewPrice會取代原書的價格,并將PromotionalText顯示到屏幕上; 例如:

原價¥40現(xiàn)價¥9.9 溫州印書場倒閉了,老板帶著小姨子跑路了. 原價都是四十五十的,現(xiàn)價只要九塊九

一對多的關系: 書的評論

顧客可以評價一本書;他們可以評星級,也可以留文字評論. 因為一本書可能沒有一個評論或者有很多(無限)的評論,所以需要創(chuàng)建一張表保存這些數(shù)據. 在本例中它是Review表. Books表與Review表是一對多的關系, 如圖2.2所示

The Review table is linked to the Books table via the foreign key called BookId

  • Review表通過BookId外鍵鏈接到Books表

在顯示圖書介紹時,需要計算評論數(shù)量與平均星級評價. 這些通過一對多的關系去檢索. 呈現(xiàn)在頁面上是以下效果:

  • 平均分 4.5 共有1000用戶評論

多對多的關系: 圖書與作者

一書本可能由一個人編寫也可能由多人編寫, 一個人(作者)可以著作一本書或多本書. 這是一個典型的多對多關系,在數(shù)據庫中Books表保存圖書數(shù)據,Authors表保存作者. Books和Authors表之間的鏈接就是多對多關系. 它們之間需要一張中間表. 參見圖2.3

The BookAuthor table is the key to creating the many-to-many relationship and is known as a linking table

  • BookAuthor表是多對多關系的核心,稱為中間表

This table uses the foreign keys as the primary keys. Because primary keys must be unique, this ensures that only one link can exist between a book and an author

  • BookAuthor表使用外鍵做為主鍵,因為主鍵必須是唯一的, 所以確保了書和作者之間只能有一個鏈接

多對多關系的頁面展示如下

  • 刪庫到跑路 - 我的程序一生 趙日天,蕭炎,林動 著

EF6: 在EF6中定義多對多關系不需要鏈接類,EF6會自動創(chuàng)建隱藏的中間表.但是在EF Core中必須自己創(chuàng)建中間表

本章中未涉及的其他關系類型

使用EF Core你可以使用繼承達到與之前一對一關系的類似結果,例如你可以將PriceOffer類繼承自Book類. EF Core會使用第七章中介紹的table-per-hierarchy(TPH)實現(xiàn). (子類和基類都需要包含在應用程序的DbContext中)

另一種是分層關系類型: 一組通過層次關系彼此關系的數(shù)據項目. 一個典型的例子是員工與經理,經理也是員工的一種. EF Core使用與一對五和一對多相同的方法來提供層次關系,在第七章詳細討論這類關系與如何配置

最終數(shù)據庫的樣子

圖2.4展示了圖書應用程序的數(shù)據庫,在本章和第三章的示例中我們會使用到它. 圖中包含了我們之前提到每張表與列的定義

注: PK表示主鍵,FK表示外鍵

為了幫助理解,圖2.5展示了圖片列表的輸出(只有一書本). 圖書應用程序需要訪問數(shù)據庫中的每一張表來構建圖書列表,后面我會使用代碼進行查詢顯示

注: 你可以在http://efcoreinaction.com/查看在線的示例,會有助于你理解本章的剩余部分,你也可以在Github倉庫中找到這個示例在本地調試運行

EF Core映射數(shù)據庫的類

我創(chuàng)建5個類對應著靈氣庫中的5張表,分別是Book,PriceOffer,Review,Author和BookAuthor(多對多中間表)

這些類稱之為實休類,以突出它們是由EF Core映射到數(shù)據庫的. 從軟件工程的角度來看實體類是普通的.Net類(有時也被稱為POCO)并沒有什么特別之處. 因為它們是EF Core映射到數(shù)據庫中的類,所以對其與其他類區(qū)分,稱為實體類

圖書應用程序中主要的實體類是Book類,如下圖所示. 它引用了PriceOffer類,Review類型的集合以及BookAuthor的集合

我們使用了EF Core的約定配置實體類的主鍵,也就是類中int類型的Id屬性. 數(shù)據庫在添加新行時使用 Sql Identity 命令創(chuàng)建唯一鍵

為了保持示例的簡單,示例中使用了EF Core的約定配置方法對數(shù)據庫建模. .Net類的導航屬性(比如ICollection)定義了我需要關系類型,例如Reviews屬性的類型是ICollection,所以是一對多關系. 第六章和第七章介紹了建模的其他方法

本文的示例介紹了如何通過EF Core定義和創(chuàng)建數(shù)據庫,如果你已經有了一個現(xiàn)有數(shù)據庫,可以使用EF Core的逆行工程數(shù)據庫的功能根據數(shù)據庫表構建DbContext類和實體類,在11.3節(jié)中會介紹到,如果你不希望EF Core更改數(shù)據庫結果而是通過SQL腳本或數(shù)據庫部署工具自己來管理,可以在11.4節(jié)中找到方法

轉載于:https://www.cnblogs.com/LiangSW/p/10761977.html

總結

以上是生活随笔為你收集整理的[翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。