引用约束中的依赖属性映射到存储生成的列。列: 'FeeID'



我收到错误:

{"参照约束中的依赖属性映射到 商店生成的列。列:"费用 ID"。"}

设置: 我已经手动创建了数据库(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 和 Fee.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

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

{"参照约束中的依赖属性映射到 商店生成的列。列:"费用 ID"。"}

尽管我尚未使用 EF 代码优先,但这看起来与在模型图中错误设置实体关系时遇到的错误相同。特别是,在我看来,您的外键是向后设置的。

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

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

最新更新