我有一个Video
类和一个MediaContent
由 1-1 链接的类,必需:必需的关系:每个类都Video
必须有 1 个关联MediaContent
。删除一个MediaContent
对象必须导致关联Video
对象的删除。
使用fluent 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
但我看不出这与删除级联有什么关系......
我错过了什么?更一般地说,您将如何建模与 EF 的可级联的一对一、必需:必需的关系?