Entity Framework 5 Soft Delete

I am trying to prevent any deletions in my database tables. Currently using Entity Framework 5. First here is my code,

public override int SaveChanges()
    {
        var Changed = ChangeTracker.Entries();
        if (Changed != null)
        {
            foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
            {
                entry.State = EntityState.Unchanged;
            }
        }

        return base.SaveChanges();
    }

I managed to prevent this. When I use the EF removal method, it no longer works. However, what I'm trying to achieve when I use the remove method for a given ID, I want to set isDeleted (which is the column (bit) in all of my db table) to false. I am currently lost in documents and common codes on the Internet.

thank

+2
source share
2 answers

, , , , , , - ISoftDeletable.

public interface ISoftDeletable
{
    bool IsDeleted { get; set; }
}

, , ISoftDeletable, IsDeleted true.

public override int SaveChanges()
    {
        var Changed = ChangeTracker.Entries();
        if (Changed != null)
        {
            foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
            {
                entry.State = EntityState.Unchanged;
                if (entry.Entity is ISoftDeletable)
                {
                    // Set IsDeleted....
                }
            }
        }

        return base.SaveChanges();
    }

, , ISoftDeletable, , .

+6

@BenjaminPauls , Entries<TEntity>. -, .

public override int SaveChanges()
{
    foreach (var entry in ChangeTracker.Entries<ISoftDeletable>())
    {
        if (entry.State == EntityState.Deleted)
        {
            // Set deleted.
        }
    }
    return base.SaveChanges();
}

:

    public override int SaveChanges()
    {
        foreach (var entry in ChangeTracker.Entries<ISoftDeletable>()
            .Where(x => x.State == EntityState.Deleted)
        {
            // Set deleted.
        }
        return base.SaveChanges();
    }
0

All Articles