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

时间:2012-12-21 01:10:08

标签: asp.net-mvc vb.net entity-framework entity-framework-5

我收到了错误:

  

{“ReferentialConstraint中的依赖属性映射到a   存储生成的列。专栏:'FeeID'。“}

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

我没有edmx文件

我有两个类FeeMetaDataFee,它们映射到数据库中的两个表(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

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

用法

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

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

  

{“ReferentialConstraint中的依赖属性映射到a   存储生成的列。专栏:'FeeID'。“}

1 个答案:

答案 0 :(得分:5)

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

错误是因为您告诉实体框架使用FeeId字段作为FeeMetaDataFee之间的外键,但该字段是FeeMetaData中自动生成的}类。这几乎肯定不是你打算做的。

如果Fee是主表,而FeeMetaData具有外键,则应将标识字段放在Fee中。如果表是相反的,那么您的类是向后的,您应该定义FeeFeeMetaData属性作为外键使用FeeId