我目前使用实体框架5,这是一个相当简单的问题。我有两种类型的收件人作为参考。实体框架FK没有级联删除更新
public File() : base()
{
this.Preview = FilePreview.None;
this.Recipients = new HashSet<SharedFileRecipient>();
}
public Folder() : base()
{
this.Preview = FilePreview.None;
this.Recipients = new HashSet<SharedFileRecipient>();
}
SharedFileRecipient只是一个普通的C#类,只有几个属性,并没有指定引用返回到文件或文件夹。
在数据库中EF映射了所有这一切,包括向dbo.SharedFileRecipients表添加两个可空的FK(File_Id和Folder_Id),该表指向dbo.File或dbo.Folder。
到目前为止好,但在运行时,当我们试图删除文件或已共享,则数据库将引发错误
一个文件夹“DELETE语句冲突与基准约束\” FK_dbo.SharedFileRecipient_dbo .Folder_Folder_Id \”。
我知道这是因为EF没有运行在dbo.SharedFileRecipients制作的file_id和Folder_Id列空进而以删除父对象之前的更新。
我们如何告诉EF这需要发生?还有,如果我真的想强制级联删除在文件/文件夹中测试,以便SharedFileRecipients在删除时将消失,如何告知EF?
我读过很多关于使用Fluent API设置它的文章,但我不认为这适用于我非常简单的模型。因为我必须实际(并明确)在SharedFileRecipient上声明外键属性。