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...