2011-06-01 44 views
6

在我當前的項目中我使用的是代碼優先的方法。有實體框架忽略派生類型

我有一個叫做Task的類型,它是模型的一部分。我也有BackgroundTask派生自TaskUserAccountTask派生自BackgroundTask

當我簡單地嘗試創建類型爲Task的對象並將其添加到我的任務存儲庫時,只要我嘗試將更改保存到數據庫,就會得到一個DbUpdateException。它的內部異常狀態:。

「無效的列名稱UserAccount_UserId'\ r \ n無效的列名 'UserAccount_Lastname' \ r \ n無效的列名 'UserAccount_Firstname' \ r \ n無效的列名 'UserAccount_Fullname' \ r \ n無效的列名稱UserAccount_Password'。\ r \ n無效的列名稱UserAccount_Title'[...]」

UserAccount是另一種類型和UserAccountTask一個屬性(LastnameUserId等是UserAccount特性) 。

我希望我對問題的描述不是太亂了: -/ 我只是希望EF忽略這樣一個事實,即Task是其他類型的基類,因爲恕我直言當時並不重要。

在此先感謝,凱文

回答

15

試着在你的派生上下文中使用這樣的:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    modelBuilder.Ignore<UserAccountTask>(); 
    modelBuilder.Ignore<BackgroundTask>(); 
} 
+1

這麼簡單:-)謝謝! – bitfrickler 2011-06-01 11:24:49

+0

非常有幫助!謝謝! – 2013-04-02 04:52:12