【问题标题】:Error 3034 occurs in EF 5.0 when using TPT inheritance and many to many relationship使用 TPT 继承和多对多关系时,EF 5.0 中出现错误 3034
【发布时间】:2013-05-07 05:48:34
【问题描述】:

我有 3 步继承 抽象实体 抽象应用实体:实体 抽象 SystemEntity:ApplicationEntity

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

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

请帮帮我

【问题讨论】:

  • 你是先写代码吗?

标签: entity-framework inheritance many-to-many entity-framework-5


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多