Освоение каскадного удаления в OrmLite: подробное руководство

В средах объектно-реляционного сопоставления (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, начиная от настройки на основе атрибутов и заканчивая ручной реализацией в пользовательской бизнес-логике. Используя эти методы, разработчики могут повысить эффективность и удобство обслуживания своих операций с базами данных.