1-1でリンクされているVideo
クラスとMediaContent
クラスがあります。required:requiredの関係:それぞれVideo
に正確に1つのが関連付けられている必要がありますMediaContent
。オブジェクトを削除するMediaContent
と、関連するVideo
オブジェクトが削除される必要があります。
流暢なAPIを使用すると、関係を次のようにモデル化できます。
modelBuilder.Entity<Video.Video>()
.HasRequired(v => v.MediaContent).WithRequiredPrincipal(mc => mc.Video)
.WillCascadeOnDelete(true);
この変更をデータベースに反映するために移行を追加する場合、これは、関係が外部キーに関して転記される方法です。
AddForeignKey("MediaContents", "MediaContentId", "Videos", "VideoId", cascadeDelete: true);
データベースを更新すると、次のエラーが発生します。
Cascading foreign key 'FK_MediaContents_Videos_MediaContentId' cannot be created where the referencing column 'MediaContents.MediaContentId' is an identity column.
プロパティWillCascadeOnDelete(true)
を削除するとエラーは削除されますが、理由がわかりません。カスケードがオンになっているかどうかに関係なく、エラーが表示されるべきではありませんか?私が問題を理解する方法では、エラーは、の生成が自動インクリメント(またはID生成戦略が何であれ)によって処理され、外部キーの制約と矛盾する可能性があるという事実にVideoId
起因MediaContentId
します。しかし、これが削除カスケードと何の関係があるのかわかりません...
私は何が欠けていますか?より一般的には、カスケード可能な1対1の必須:必須のEFとの関係をどのようにモデル化するのでしょうか。