【學習紀錄】Code First的三種繼承策略的練習

描述最近練習Code First的三種繼承策略的感想

最近研究Entity Framework Tutorial的內容

網站上有提到3種code first的繼承策略
我因為對內容有些疑問所以實作測試看看
TPH:
我對內容沒啥想試驗(大概是我目前還沒有想使用的情境吧)
這也是實作上最簡單的做法(因為是預設的)
TPT:
我會想實作是好奇當要砍資料時,是要先砍子類別的table資料還是父類別的
我是有想使用的情境過幾天應該就會使用看看

TPC:

這部分我很難描述
我在更久以前有看『ASP.NET MVC5網站開發美學』(書名)的TPC相關範例
我認為書本上和網站上的範例算是不同概念,哪種才算TPC最原本的概念呢?
如果搞不清楚的話,那當然就很難描述TPC是怎樣的了

先講書上的內容吧
有段語法是:
modelBuilder.Entity<Camera>().Map(m => m.MapInheritedProperties().ToTable("Cameras"));
這段如果改成
modelBuilder.Entity<Camera>().ToTable("Cameras");
可以產生同樣的table結果(至少我是看不出來差異)
這使得使用Map變得有點多餘的感覺
修改後的語法,其實就是TPT的語法,產生不一樣table的原因是使用的DBContext的內容差異
書本上的範例使用的是子類別,網站則使用父類別
再來講網站的內容
網站的三種策略的範例的DBContext的DbSet部分是一致的
如果同樣把Map的部分拿掉,那就產生結果變TPT了
網站上的版本坦白說,我想不到啥適用的情境
但是書上的版本,我覺得列入繼承策略的一種範例還蠻奇怪的,但我倒是想得到很多適用的情境