Я пытаюсь настроить DeleteBehavior для всех моих сущностей.Окончательный результат заключается в том, что я могу просто запустить:
DELETE FROM Companies Where Id = '1'
И все мои 800 таблиц будут очищены каскадно (Все ссылки на таблицы CompanyId как FK ) ...
Мои классы
public interface ITest
{
string PropX { get; set; }
Company Company { get; set; }
}
public abstract class Reg {
public int Id { get; set; }
public Company Company { get; set; }
}
public class Company {
public int Id { get; set; }
public string Name { get; set; }
}
public class Test : Reg, ITest
{
public string Prop1 { get; set; }
public string PropABC { get; set; }
public string PropX { get; set; } = "My Info";
}
public class Test2 : Reg, ITest
{
public string PropEFG { get; set; }
public string PropX { get; set; } = "My Info2";
}
public class Test3 : Reg, ITest
{
public string PropExample { get; set; }
public string PropX { get; set; } = "My Info3";
}
Если я это сделаю, то отлично работает:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Test>().HasOne(p=>p.Company).WithMany().OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Test2>().HasOne(p=>p.Company).WithMany().OnDelete(DeleteBehavior.Cascade);
//....... not for 800 classes
}
Но у меня 800 классов ... Так что я пытаюсь сделатьthis:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var my800Entities = modelBuilder.Model.GetEntityTypes().ToList();
foreach (var entity in my800Entities)
{
modelBuilder.Entity(entity.Name).HasOne("Company").WithMany().OnDelete(DeleteBehavior.Cascade);
/* It seems to me that this code is creating an
extra column and not defining the already existing property */
}
}
Приведенный выше код генерирует миграцию с еще одним столбцом в каждом классе, например:
- Другие свойства ...
- Компания (с FK ограничить поведение при удалении)
- Company1 (С FK каскад поведение при удалении)
Что мне нужно сделать, только для 1 столбца (Компания) с поведением удаления Каскад?