1

EF Code First 4.3でSqlCe4.0クライアントに対してdbを作成すると、周期的な参照エラーが発生します。明確にするために、希望するデータベーススキーマの写真を添付し​​ました。参考までに、SQLServer2008で目的のスキーマを正常に作成しました。

参照関係は、許可されていない循環参照になります。[制約名=FK_Routes_Seasons_SeasonID]

  • ルートはシーズンと1対多の関係があります
  • 契約はルートと1対多の関係があります
  • 契約はシーズンと1対多の関係があります

必要なDBスキーマ

クラスの私のコードは次のとおりです。

Public Class Route
    Public Property RouteID as Integer

    Public Property SeasonID as Integer
    Public Overridable Property Season As Season

    Public Overridable Property Contracts As ICollection(Of Contract)
End Class

Public Class Season
    Public Property SeasonID as Integer

    Public Overridable Property Routes As ICollection(Of Routes)
    Public Overridable Property Contracts As ICollection(Of Contract)
End Class

Public Class Contract
    Public Property ContractID As Integer

    Public Property RouteID As Integer
    Public Overridable Property Route As Route

    Public Property SeasonID As Integer
    Public Overridable Property Season As Season
End Class
4

1 に答える 1

2

必ずしも循環的である必要はありませんが、削除ツリーの同じテーブルに複数の参照があります。この投稿この投稿を参照してください

あなたのテーブルでは:

シーズン->ルート->契約

シーズン->契約

これらの関係の1つがカスケード削除されないように設定する必要があります。私はVBに精通していませんが、C#では次のように流暢に設定できます。

modelBuilder.Entity<Routes >()
            .HasRequired(r => r.Season )
            .WithMany(s => s.Routes)
            .HasForeignKey(r => r.SeasonID );
            .WillCascadeOnDelete(false);
于 2012-08-23T11:29:27.577 に答える