Entity framework 使用TPT继承和多对多关系时,EF 5.0中出现错误3034

Entity framework 使用TPT继承和多对多关系时,EF 5.0中出现错误3034,entity-framework,inheritance,many-to-many,entity-framework-5,Entity Framework,Inheritance,Many To Many,Entity Framework 5,我有三步继承 抽象实体 抽象应用性:实体 抽象系统实体:应用程序性 系统实体包含一个多对多导航属性,当我尝试加载该属性时,我得到(202,10):错误3034:映射从第202、208行开始的片段时出现问题:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有不同键的两组实体映射到同一组行 (208,10):错误3034:映射从第208、578行开始的片段时出现问题:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有不同键的两组实体映射到同一组行 请帮助我我将在这里发布一个解

我有三步继承 抽象实体 抽象应用性:实体 抽象系统实体:应用程序性

系统实体包含一个多对多导航属性,当我尝试加载该属性时,我得到(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
导入System.ComponentModel.DataAnnotations.Schema
名称空间模型
公共MustInherit类NotificationBase
作为整数的公共属性ID
...
末级
结束命名空间
派生类

Imports System.ComponentModel.DataAnnotations.Schema

Namespace Models
    <Table("EmergencyNotification")>
    Public NotInheritable Class EmergencyNotifications
        Inherits NotificationBase
        ...
    End Class
End Namespace
导入System.ComponentModel.DataAnnotations.Schema
名称空间模型
公共不可继承类EmergencyNotifications
继承NotificationBase
...
末级
结束命名空间

您是否先编写代码?