1

エラーが発生しました:

{"ReferentialConstraintの依存プロパティは、ストアで生成された列にマップされます。列:'FeeID'。"}

セットアップ:データベースを手動で作成しました(SQL Server 2012およびSSMS)

edmxファイルがありません

データベース内の2つのテーブルにマップする2つのクラスFeeMetaDataとがあります(と)FeePFD.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の間には1対1の関係があります

クラス構造

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の依存プロパティは、ストアで生成された列にマップされます。列:'FeeID'。"}

4

1 に答える 1

5

私はまだEFコードファーストを使用していませんが、これは、モデル図でエンティティの関係を誤って設定した場合に発生するのと同じエラーのように見えます。特に、外部キーが逆方向に設定されているように見えます。

エラーは、とFeeIdの間の外部キーとしてフィールドを使用するようにEntity Frameworkに指示したが、そのフィールドはクラスで自動生成されるためです。それはほぼ間違いなくあなたが意図したことではありません。FeeMetaDataFeeFeeMetaData

Feeがプライマリテーブルであり、外部キーがある場合はFeeMetaData、IDフィールドをに入力する必要がありますFee。テーブルが逆の場合、クラスは逆方向になり、代わりに外部キーとしてプロパティをFee持つように定義する必要があります。FeeMetaDataFeeId

于 2012-12-21T02:02:24.380 に答える