C# 实体框架外键约束可能导致循环或多个级联路径

C# 实体框架外键约束可能导致循环或多个级联路径,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我使用两个实体 public class Reservation { public Reservation() { } [Display(Name = "Id:")] [Required] public int Id { get; set; } public string ClientId { get; set; } public virtual User

我使用两个实体

public class Reservation
    {
        public Reservation()
        {
        }

        [Display(Name = "Id:")]
        [Required]
        public int Id { get; set; }


        public string ClientId { get; set; }
        public virtual User Client { get; set; }

    }

public class User : IdentityUser
{
    public User()
    {
        this.Reservations = new HashSet<Reservation>();
    }

    [Required]
    [Display(Name = "Imię")]

    public string Name { get; set; }
    [Display(Name = "Nazwisko")]
    [Required]
    public string Surname { get; set; }

    [Display(Name = "Data urodzenia")]
    [DataType(DataType.Date)]
    [Required]
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
    public DateTime BirthDate { get; set; }

    public virtual ICollection<Reservation> Reservations { get; private set; }
}

第一个问题(多个级联路径)是通过删除
来解决的。WillCascadeOnDelete(true)
?如果已经解决了,您可以提供如何删除
保留
实体数据的示例吗?我通过在删除用户之前删除与用户关联的所有保留来解决问题。第一个问题(多个级联路径)可能重复通过删除
来解决。WillCascadeOnDelete(true)
?如果已经解决了,您能提供如何删除
保留
实体数据的示例吗?我已经解决了这个问题,在删除用户本身之前删除了与用户关联的所有保留。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

            modelBuilder.Entity<Reservation>().HasRequired(x => x.Client)
                                            .WithMany(x => x.Reservations)
                                            .HasForeignKey(x => x.ClientId)
                                            .WillCascadeOnDelete(true);
}
modelBuilder.Entity<Reservation>().HasRequired(x => x.Client)
                                            .WithMany(x => x.Reservations)
                                            .HasForeignKey(x => x.ClientId);
Message = "The DELETE statement conflicted with the REFERENCE constraint \"FK_dbo.Reservation_dbo.AspNetUsers_ClientId\". The conflict occurred in database \"aspnet-AgrotouristicWebApplication-20170716115104\", table \"dbo.Reservation\", column 'ClientId'.\r\nThe sta...