實體框架 - 使用.Include進行繼承?

entity-framework

我認為這裡有類似的帖子,但不完全一樣......

我的EF模型中有兩個實體 - 讓我們稱之為Person和Developer,後者繼承自前者。

我還有一個名為Qualifications的開發者協會。這在Person實體上不可見。

如果我正在針對上下文編寫查詢,我該如何自動.Include()開發人員的資格,例如

來自員工的context.Employee .Include(“Qualifications”)選擇員工

不起作用...... EF抱怨這種關係不存在(我假設因為它在Employee上不存在 - 但是在上下文中沒有Developer實體,只有Employee)。

熱門答案

我遇到過這個問題並進行了一些實驗。這是我發現使用LINQ 2實體工作的。

假設我們在您的示例中有人< - Developer ---- Qualifications。

如果您想選擇包含資格的開發人員,您可以這樣做。

var dev = (from d in context.Persons.OfType<Developer>
                            .Include("Qualifications")
          where d.ID == id
          select d).FirstOfDefault();

現在假設我們在Person和Address之間有另一個關聯,我們也可以使用LINQ 2 Entity將Address包含在select中。

var dev = (from d in context.Persons
                            .Include("Address")
                            .OfType<Developer>()
                            .Include("Qualifications")
          where d.ID == id
          select d).FirstOfDefault();

注意我在轉換Type之前如何包含我需要的東西,並在轉換後再次包含。兩個包括現在應該沒有任何問題地一起工作。我測試了這些方法,它們都有效。我希望他們能為你工作,因為你正確地設置了繼承。

GL。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因