В средах объектно-реляционного сопоставления (ORM), таких как OrmLite, каскадное удаление — это мощная функция, обеспечивающая целостность данных за счет автоматического удаления связанных записей при удалении родительской записи. Это устраняет необходимость ручного удаления зависимых записей и упрощает операции с базой данных. В этой статье мы рассмотрим различные методы реализации каскадного удаления в OrmLite, сопровождаемые примерами кода.
Метод 1: использование атрибута [References]
с OnDelete= "CASCADE"
public class Parent
{
[PrimaryKey]
public int Id { get; set; }
[References(typeof(Child))]
[OnDeleteCascade]
public int ChildId { get; set; }
}
public class Child
{
[PrimaryKey]
public int Id { get; set; }
}
Метод 2. Настройка каскадного удаления в классе OrmLiteConfig
OrmLiteConfig.CascadeDeletes = true;
Метод 3. Включение каскадного удаления для определенных связей таблиц
db.CreateTable<Parent>();
db.CreateTable<Child>();
db.AddForeignKey<Parent, Child>(p => p.ChildId, c => c.Id, onDelete: ReferentialAction.Cascade);
Метод 4. Реализация каскадного удаления вручную в пользовательской бизнес-логике
public void DeleteParentWithCascade(int parentId)
{
using (var db = OpenDbConnection())
using (var trans = db.OpenTransaction())
{
db.DeleteById<Parent>(parentId);
var childIds = db.Column<int>(db.From<Child>().Where(c => c.ParentId == parentId));
if (childIds != null && childIds.Count > 0)
db.DeleteByIds<Child>(childIds);
trans.Commit();
}
}
Каскадное удаление — это важная функция OrmLite, которая упрощает операции с базой данных и обеспечивает целостность данных за счет автоматического удаления зависимых записей. В этой статье мы рассмотрели несколько методов реализации каскадного удаления в OrmLite, начиная от настройки на основе атрибутов и заканчивая ручной реализацией в пользовательской бизнес-логике. Используя эти методы, разработчики могут повысить эффективность и удобство обслуживания своих операций с базами данных.