我收到了错误:
{“ReferentialConstraint中的依赖属性映射到a 存储生成的列。专栏:'FeeID'。“}
设置: 我手动创建了数据库(SQL Server 2012和SSMS)
我没有edmx文件
我有两个类FeeMetaData
和Fee
,它们映射到数据库中的两个表(PFD.FeeMetaData
和PFD.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'。“}
答案 0 :(得分:5)
虽然我还没有使用EF代码优先,但如果在模型图中错误地设置实体关系,这看起来就像是同样的错误。特别是,我认为你的外键设置为向后。
错误是因为您告诉实体框架使用FeeId
字段作为FeeMetaData
和Fee
之间的外键,但该字段是FeeMetaData
中自动生成的}类。这几乎肯定不是你打算做的。
如果Fee
是主表,而FeeMetaData
具有外键,则应将标识字段放在Fee
中。如果表是相反的,那么您的类是向后的,您应该定义Fee
以FeeMetaData
属性作为外键使用FeeId
。