错误3034在使用TPT继承和多对多关系时发生



我有3步继承抽象的实体摘要ApplicationEntity:实体摘要SystemEntity: ApplicationEntity

系统实体包含一个多对多的导航属性,当我尝试加载时,我得到(202,10):错误3034:从第202,208行开始的映射片段问题:两个具有不同键的实体映射到同一行。确保这两个映射片段没有将两组具有不同键的实体映射到同一组行。

(208,10):错误3034:从第208,578行开始的映射片段的问题:两个具有不同键的实体映射到同一行。确保这两个映射片段没有将两组具有不同键的实体映射到同一组行。

请帮帮我

我将在这里发布一个解决方案,但这可能不适合您的问题,因为这是代码优先的方法。

解决方案实际上非常简单。只要用唯一的表名修饰基类和派生类,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

最新更新