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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

EFCore Lazy Loading + Inheritance = 干净的数据表 (一)

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EFCore Lazy Loading + Inheritance = 干净的数据表 (一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

α角 與 β角

關于α角 與 β角的介紹,請見上文?如何用EFCore Lazy Loading實現Entity Split。
本篇會繼續有關于β角的彩蛋在等著大家去發掘。/斜眼笑

其他

  • 本篇的程序,可以在?https://github.com/kentliu2007/EFCoreDemo/tree/master/InheritanceWithEntitySplit?下載。建議大家可以下載之后對照著程序來閱讀本篇(我用的是VS2017)。

  • 由于篇幅比較長,為了方便閱讀,本篇分成兩個部分。如果耐著性子看完第一部分,而不是處女座/不是DB First er的,可以止步,不需要繼續看第二部分了。

需求

我們先來看看需求:

  • 某校園的一個人員資料系統,其中可登錄用戶有兩種:教師和學生。每個可登錄用戶具有以下屬性:

    • 用戶登錄名 (該系統用戶的唯一標識值)

    • 密碼

  • 教師。系統需要記錄?教師?的以下屬性:

    • 教職工號碼 (某校園里,該教師的唯一標示值)

    • 工資級別 (自編的工資級別)

  • 學生。系統需要記錄?學生?的以下屬性:

    • 學生編號 (某校園里,該學生的唯一標示值)

    • 學生就讀年級

邏輯設計

根據上述需求,我們會有以下這樣的類的設計:

上述設計還有一個一點點不同的版本:

物理設計

從邏輯設計到物理設計,會由于我們選擇的具體的實現方式而產生一定的偏差。例如,不同廠商的數據庫引擎,或者不選用數據庫引擎而選用其他的產品(MQ或者NoSQL類產品),甚至不同的ORM產品,都會引致偏差的發生。

用EF6怎么實現

下面我們從DB First er的角度,直接根據上述的邏輯設計,設計出數據表。然后再看看用EF6如何實現。

數據表

  • Users的索引

  • Students的索引

  • Teachers的索引

  • FK_Students_Users的設置

  • FK_Teachers_Users的設置

EF Model

在各種wizard的幫助下,逆向工程后,我們需要做一些小改動,刪掉某些Property,以及Navigation Property,然后把 Inheritance 關系拉好。并且轉換一下 User.UserType為Enum UserTypes。
于是我們就有了這樣的 EF Model:



(第一個β角的彩蛋,我們根據習慣,通常會把UserType設置為Enum。這個和邏輯設計有一點點偏差)

程序
  • Solution

  • Unit Test

  • 測試數據

EF6對類的繼承提供了支持,所以從類到表,然后再到EF,一切都很順其自然,一氣呵成。

用EFCore怎么實現

EFCore也提供類的繼承的支持,可以在這里查看微軟的文檔:https://docs.microsoft.com/zh-cn/ef/core/modeling/inheritance?,以及?https://docs.microsoft.com/zh-cn/ef/core/modeling/relational/inheritance
由于EFCore更加傾向于Code First,所以我們按照文檔來走一遍,然后對本篇的需求,就會有以下的產出:

程序
  • Solution

  • User、Student和Teacher的程序

? ?public partial class User{ ? ? ? ?public string LoginName { get; set; } ? ? ? ?public string FirstName { get; set; } ? ? ? ?public string LastName { get; set; } ? ? ? ?public string Password { get; set; }} ? ?public partial class Student : User{ ? ? ? ?public string StudentCode { get; set; } ? ? ? ?public int GradeLevel { get; set; }} ? ?public partial class Teacher : User{ ? ? ? ?public string StaffCode { get; set; } ? ? ? ?public int SalaryGrade { get; set; }}
  • DBContext的程序

  • Unit Test程序

數據表

有了上述的程序,我們跑一下Migration命令,于是就有以下的表結構

  • Migration命令

  • 表結構

  • Users的索引

沒有其他表了?真的沒有了。用EF Core的正向工程,上述的三個父子類,它就是生成這樣一個數據表,就夠了。當然DBA還可能對數據表做一點改動,例如 主鍵不要是 聚集索引等。不過基于不騙篇幅的借口,讓我們偷一下懶吧。 :-P
(第二個β角的彩蛋出現了。由于我們選用了 EF Core,物理設計的數據表,竟然和邏輯設計有著喇么大的偏差)

  • 測試數據

好吧,看起來用EFCore來實現類的繼承也很簡單。一切操作只需要按照教程一步步搗弄,也很直接方便。

本篇結語

上面就是EF6 和 EFCore分別怎樣支持 類的繼承的做法。如果你是Code First er,可以止步于此了。
如果你是處女座,或者 DB First er,

  • 你會發現EFCore正向工程后的數據表,表結構很特別,且看著測試數據的結果,會感覺是一堵裝飾墻。反正就是總覺得有說不出來的違和感。

  • 你會想,有沒有可能,讓EFCore,用上和邏輯設計之間β角偏差最小的數據表呢?

如果你有上述的感覺和疑問,歡迎繼續看下一篇EFCore Lazy Loading + Inheritance = 干凈的數據表 (二) 【獻給處女座的DB First程序猿】。

相關文章:

  • Shadow Properties之美(一)【Microsoft Entity Framework Core隨筆】

  • Shadow Properties之美(二)【Microsoft Entity Framework Core隨筆】

  • “幕后英雄”之Backing Fields【Microsoft Entity Framework Core隨筆】

  • 如何用EFCore Lazy Loading實現Entity Split

原文地址:https://www.cnblogs.com/fatkent/p/10396596.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


總結

以上是生活随笔為你收集整理的EFCore Lazy Loading + Inheritance = 干净的数据表 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩欧美中文字幕一区二区三区 | 色姐| 国产1区在线 | 人妻无码中文久久久久专区 | 日本成人午夜 | 中午字幕在线观看 | 蜜桃视频导航 | 在线免费看黄色 | 牛牛av| 久久精品国产成人av | 国产在线拍揄自揄拍无码 | 亚洲经典自拍 | 亚洲自拍成人 | 国产v亚洲v天堂无码久久久 | 好屌妞视频这里只有精品 | 日韩在线毛片 | 综合色播| 天天天干干干 | 国产97在线观看 | 久草福利在线视频 | 日日影院| 精品无码一区二区三区在线 | 国产在线观看免费av | 日韩免费黄色片 | 99热8 | 国产乱码精品一区二区三区忘忧草 | 欧美日韩亚洲系列 | 国产精品久久久久毛片大屁完整版 | 天天曰天天爽 | 日本在线一区二区三区 | 亚洲天堂视频一区 | 亚州三级| www欧美在线 | 国内自拍第一页 | 一个色综合导航 | 男女在线观看视频 | 欧美精品做受xxx性少妇 | 在线免费观看成人 | 亚洲高清毛片一区二区 | 在线xxxx| 色av一区二区 | 性感少妇av | 天天狠天天干 | fc2ppv在线观看 | 中国妇女做爰视频 | 黄色动漫免费在线观看 | 亚洲国产精品毛片av不卡在线 | 精品国产亚洲一区二区麻豆 | 久久夜色网 | 亚洲卡一卡二 | 国产午夜精品无码一区二区 | 国产人妻互换一区二区 | 粉嫩av一区 | 国产情侣激情自拍 | 午夜精品国产 | 午夜在线观看视频18 | 在线观看网址你懂的 | 中文字幕不卡在线观看 | 91 久久| 人妻体内射精一区二区三区 | www欧美 | 脱美女衣服亲摸揉视频 | 天天拍夜夜爽 | 欧美人妻少妇一区二区三区 | 欧美日韩在线看 | 欧美人喂奶吃大乳 | 夜夜嗨av禁果av粉嫩av懂色av | 日韩av资源网| 在线观看日本视频 | 欧美成人三级在线观看 | 国产精品一卡 | jizz免费观看 | 亚洲人人在线 | 色秀视频网| 久久久www成人免费毛片 | 中文字幕一区二区三区人妻不卡 | 国内精品国产成人国产三级 | 亚洲区小说区图片区qvod | 美国黄色一级视频 | 成人网战 | 91国模| 西西久久 | 亚洲欧美自拍视频 | 欧美18av | 亚洲综合大片69999 | 91毛片网站 | 亚洲午夜激情 | 亚洲综合欧美日韩 | 午夜影院91 | 少妇精品久久久久www | 欧美成人资源 | 欧亚乱熟女一区二区在线 | 草草影院国产第一页 | 久久午夜伦理 | 日韩在线高清 | 伊人久久艹 | 国产精品美女主播 | 国产精品一区二区亚洲 | 一本到免费视频 |