Я не уверен, как правильно настроить мои таблицы, чтобы я не получал такую ошибку при попытке сделать много ко многим.
System.Data.SqlClient.SqlException: 'Introducing FOREIGN KEY constraint 'FK_TableB_TableA_TableBId' on table 'TableB' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.'
Мои модели
public class TableA
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<TableB> TableBs { get; set; }
}
public class TableB
{
public int Id { get; set; }
public int TableCId { get; set; }
public virtual TableC TableC { get; set; }
public int TableAId { get; set; }
public virtual TableA TableA { get; set; }
}
public class TableAConfig : IEntityTypeConfiguration<TableA>
{
public void Configure(EntityTypeBuilder<TableA> builder)
{
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.Property(x => x.Name).HasMaxLength(100).IsRequired();
}
}
public class TableBConfig : IEntityTypeConfiguration<TableB>
{
public void Configure(EntityTypeBuilder<TableB> builder)
{
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
}
}
//code snippet
//remove all tableB
company.TableBs.Clear();
// add all new dealers.
foreach (var d in dto.Data)
{
company.TableBs.Add(new TableB() { TableCId = d.id, TableA = TableA });
}
dbContext.SaveChanges();
редактировать
public class TableC
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public virtual ICollection<TableBs> TableBs { get; set; }
}
public class TableCConfig : IEntityTypeConfiguration<TableC>
{
public void Configure(EntityTypeBuilder<TableC> builder)
{
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.Property(x => x.Name).HasMaxLength(50).IsRequired();
builder.Property(x => x.Code).HasMaxLength(5).IsRequired();
}
}