ReferentialConstraint中的依赖属性映射到存储生成的列.专栏:'FeeID'

Sam*_*Axe 1 vb.net asp.net-mvc entity-framework entity-framework-5

我收到错误:

{"ReferentialConstraint中的依赖属性映射到存储生成的列.列:'FeeID'."}

设置:我手动创建了数据库(SQL Server 2012和SSMS)

我没有edmx文件

我有两个类,FeeMetaData并且Fee,其映射到两个表中的数据库(PFD.FeeMetaDataPFD.Fees)

数据库结构

FeeMetadata
------------ 
FeeID  BIGINT  IDENTITY(1,1) PRIMARY KEY 
Something VARCHAR(25) NOT NULL

Fees
------------ 
FeeID  BIGINT  PRIMARY KEY NOT NULL
FeeBatchID  BIGINT NOT NULL
PersonID BIGINT 
Amount DECIMAL(18,2) NOT NULL
DueDate DATE NOT NULL
Run Code Online (Sandbox Code Playgroud)

FeeMetadata.FeeID和Fees.FeeID之间存在一对一的关系

阶级结构

Imports System.ComponentModel.DataAnnotations
Imports System.ComponentModel.DataAnnotations.Schema
Namespace PFD
    <Table("FeeMetadata", Schema:="PFD")>
    Public Class FeeMetadata

        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal tFee As SOACourt_v1)
            Me.New()
            Me.PfdFee = New PFD.Fee(tFee)
        End Sub

        <Key>
        <DatabaseGenerated(DatabaseGeneratedOption.Identity)>
        Public Property FeeID As Int64

        Public Property Something As String

        <ForeignKey("FeeID")>
        Public Property PfdFee As PFD.Fee
    End Class
End Namespace





Namespace PFD
<Table("Fees", Schema:="PFD")>
Public Class Fee
    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(ByVal tFee As SOACourt_v1)
        Me.New()
        Me.Amount = tFee.Amount
        Me.DueDate = tFee.DueDate
    End Sub


    <DatabaseGenerated(DatabaseGeneratedOption.None)>
    Public Property FeeID As Int64

    Public Property FeeBatchID As Int64 = 0

    Public Property PersonID As Int64? = 0

    Public Property Amount As Decimal

    Public Property DueDate As Date = Date.Today
End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)

用法

Using tContext As FeesContext = New FeesContext
    For Each tFee As SOACourt_v1 In tFees
        tContext.FeeMetadata.Add(New PFD.FeeMetadata(tFee))
    Next
    tContext.SaveChanges()     '  <---- Error occurs here
End Using
Run Code Online (Sandbox Code Playgroud)

关于导致错误的原因的任何想法:

{"ReferentialConstraint中的依赖属性映射到存储生成的列.列:'FeeID'."}

Mic*_*eld 5

虽然我还没有使用EF代码优先,但如果在模型图中错误地设置实体关系,这看起来就像是同样的错误.特别是,在我看来,你的外键设置为向后.

该错误是因为您告诉Entity Framework将该FeeId字段用作FeeMetaData和之间的外键Fee,但该字段是在FeeMetaData类中自动生成的.这几乎肯定不是你打算做的.

如果Fee是主表并且FeeMetaData具有外键,那么您应该将标识字段放入Fee.如果表是相反的,那么你的类是向后的,你应该定义Fee为具有作为外键的FeeMetaData属性FeeId.