簡體   English   中英

實體框架數據上下文不包含我使用 inheritance 的實體的集合。 為什么?

[英]Entity framework data context does not contain a collection of my entity that uses inheritance. Why?

我正在使用帶有實體框架的 model,它利用了 inheritance。 我有一個名為“User”的基本類型的實體和兩個從它繼承的實體(“Admin”和“Worker”)。 這是 model:


(來源: codetunnel.com

問題是,當我創建我的實體框架容器時,它沒有工作人員或管理員的集合,只有用戶。

EntityContainer context = new EntityContainer();
context.Users; // Exists.
context.Workers; // does not exist.

如何獲得工作人員/管理員的集合而不僅僅是普通用戶? 同樣,如何為我的FamilyAccount實體提供管理員和工人的導航屬性,而不是普通用戶?

提前致謝!

PS - 如果這很重要,我正在為我的 inheritance 使用每個類型的表model。

.OfType似乎運作良好。 是否有另一種方法可以為工作人員或管理員實際添加導航屬性?

是的,這是 EF 的行為。 如果要導航到 Admin 和 Worker,可以執行以下操作:

var admins = context.Users.OfType<Admin>();
var workers = context.Users.OfType<Worker>();

http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-3.aspx

本文介紹如何擴展實體並自己添加導航屬性。 滾動到“構建特定部門查詢”header。 這就是我所追求的,消除了使用.OfType<Worker>()的要求。

現在我可以做familyAccount.Admins並且在附近一切都很好。

每個類型的表 (TPT) Inheritance 涉及將基本類型的所有屬性存儲在單個表中。 每個具體類型的表 (TPC) Inheritance 涉及將每種類型的數據存儲在一個完全獨立的表中,它們之間沒有外鍵約束。

如果您想為 Admins 和 Workers 使用單獨的表,那么您可能應該使用 TPC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM