ON DELETE CASCADE в c#
Таблицы в базе создаю автоматически соответственно моделям (если их в базе нет):
public BusinessContext(DbContextOptions<BusinessContext> options)
: base(options)
{
Database.EnsureCreated();
}
Вот мои модели где Founder связан с Customer (Внешним ключом):
public class Customer
{
public int Id { get; set; }
public int ITN { get; set; }
public string CustomerName { get; set; }
public string EntityType { get; set; }
public string CreationData { get; set; }
public string UpdateDate { get; set; }
}
public class Founder
{
public int FoundersId { get; set; }
public int ITN { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string CreationData { get; set; }
public string UpdateDate { get; set; }
//_______________________________________
public int CustomerId { get; set; }
public Customer Customers { get; set; }
}
Что нужно внести чтоб при удалении каких то данных происходило автоматически удаление зависимых данных(ON DELETE CASCADE)?
Ответы (1 шт):
Автор решения: Jagailo
→ Ссылка
Укажите данное поведение в конфиге EF.
.NET Core (Документация):
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasOne(x => x.Founder)
.WithMany(a => a.Customers)
.OnDelete(DeleteBehavior.Delete);
}
.NET Framework (Документация):
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasOptional(a => a.Founder)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}
P.S. У вас неправильно составлены модели для связи. Если это 1 к 1, то в обоих сущностях должны быть поля противоположных. Если это 1 ко многим, то в одной должно быть поле другой сущности, а во второй список первых.
P.P.S. Не используйте множественное число в имени поля для одиночного объекта.