2010-04-22 42 views
1

我在將實體框架保存派生類型(TPT)到數據庫時遇到問題。如何在實體框架中保存派生類型(TPT)?

比方說,我有基地實體動物和派生類型狗。

我想保存Dog實體。

我以爲我可以像contex.AddToDogs()那樣做,但是這個contex只包含基礎實體 - 動物。所以我只能保存Animal對象 - contex.AddToAnimals()

我也試圖與contex.AddObject("Animals", dogInstance),但我得到了以下錯誤:

The member with identity 'NavigationProperty' does not exist in the metadata collection.

但我必須添加的EntityReference的 「NavigationProperty」。

那麼如何在EF中保存派生類型呢?

回答

1

答案是contex.AddObject("Animals", dogInstance)

本來我對此有錯誤,但錯誤只是說導航屬性名稱錯誤,但實體集名稱是錯誤的。事實確實如此。所以我修復它,現在保存工作正常(狗被保存到動物和狗表)。

+0

contex.AddObject(「Animals」,dogInstance)給我「指定的值不是有效常量類型的實例\ r \ n參數名稱:值」。 – Shuo 2010-10-13 17:49:12

0

如果沒有狗實體,無論您添加哪個引用,都不會有AddToDogs()方法,因此EF不知道如何自動將派生類型映射到實體。您可以創建一個對象映射到另一個函數或使用像AutoMapper

一個工具,如果我把你的問題,望文生義和你正在服用的代碼,第一種方法然後在EF繼承和公司章程的說明請看this

相關問題