Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架:如何启用单向相关实体的级联删除_C#_Entity Framework_Code First - Fatal编程技术网

C# 实体框架:如何启用单向相关实体的级联删除

C# 实体框架:如何启用单向相关实体的级联删除,c#,entity-framework,code-first,C#,Entity Framework,Code First,有两个实体,如bellow: public class Business { public int Id {get; set;} public File Logo {get; set;} public int? LogoId {get; set;} public File Video {get; set;} public int? Video {get; set;} public ICollection<File> Images

有两个实体,如bellow:

public class Business
{
    public int Id {get; set;}

    public File Logo {get; set;}
    public int? LogoId {get; set;}

    public File Video {get; set;}
    public int? Video {get; set;}

    public ICollection<File> Images {get; set;}
}

public class File
{
    // some file props, such as Id, Name, ...
}
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

        modelBuilder.Entity<Entities.Business>()
            .HasOptional(b => b.Logo)
            .WithOptionalPrincipal()
            .WillCascadeOnDelete();

        modelBuilder.Entity<Entities.Business>()
            .HasOptional(b => b.Video)
            .WithOptionalPrincipal()
            .WillCascadeOnDelete();

        modelBuilder.Entity<Entities.Business>()
            .HasMany(b => b.Images)
            .WithOptional()
            .WillCascadeOnDelete();
这是我的错误:

引入外键约束 表“Files”上的“FK_dbo.Files_dbo.Business_Business_Id1”可能导致 循环或多个级联路径。指定ON DELETE NO ACTION或ON 不更新任何操作,或修改其他外键约束。不能 创建约束


如果您喜欢使用单独的配置类,您可以尝试以下方法:

  public class BusinessConfiguration : EntityTypeConfiguration<Business>
  {
        public BusinessConfiguration()
        {
            HasMany(x => x.Images).WithOptional().WillCascadeOnDelete();
            HasOptional(x => x.Logo).WithOptional().WillCascadeOnDelete();
            HasOptional(x => x.Video).WithOptional().WillCascadeOnDelete();
        }
  }
公共类业务配置:EntityTypeConfiguration
{
公共业务配置()
{
有许多(x=>x.Images).WithOptional().WillCascadeOnDelete();
has可选(x=>x.Logo).WithOptional().WillCascadeOnDelete();
has可选(x=>x.Video).WithOptional().WillCascadeOnDelete();
}
}

当您未在
内传递lambda时。WithOptional()
。WithRequired()
表示另一端没有导航属性。

先编码?先做模特?数据库优先?我正在尝试代码优先。哎呀!出现以下错误:在表“Files”上引入外键约束“FK_dbo.Files_dbo.Business_Business_Id1”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。