0

時,會發生在EF 5.0我有3個步驟繼承 抽象實體 抽象ApplicationEntity:實體 抽象SystemEntity:ApplicationEntity錯誤3034使用TPT繼承和多對多的關係

系統實體包含一個多對多導航屬性當我嘗試加載時我得到(202,10):錯誤3034:映射片段開始於行202,208的問題:具有不同鍵的兩個實體映射到同一行。確保這兩個映射片段不會將具有不同鍵的兩組實體映射到同一組行。

(208,10):錯誤3034:從第208,578行開始映射片段時出現問題:具有不同鍵的兩個實體映射到同一行。確保這兩個映射片段不會將具有不同鍵的兩組實體映射到同一組行。

請幫我

+0

你首先做的代碼? – 2013-05-06 21:39:50

回答

0

我要在這裏發表一個解決方案,但因爲這是代碼第一種方法,這可能不適合您的問題。

解決方案其實很簡單。只需使用唯一的表名稱修飾基類和派生類,EF將把每個類表示爲一個單獨的表。

在實踐中(使用VB,但你明白了吧,如果C#):

基類

Imports System.ComponentModel.DataAnnotations.Schema 

Namespace Models 
    <Table("Notification")> 
    Public MustInherit Class NotificationBase 
     Public Property ID As Integer 
     ... 
    End Class 
End Namespace 

派生類

Imports System.ComponentModel.DataAnnotations.Schema 

Namespace Models 
    <Table("EmergencyNotification")> 
    Public NotInheritable Class EmergencyNotifications 
     Inherits NotificationBase 
     ... 
    End Class 
End Namespace