Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Entity Framework/SQL2008 — jak automatycznie aktualizować pola LastModified dla jednostek?

Wiem, że jestem trochę spóźniony na imprezę, ale właśnie rozwiązałem to dla projektu, nad którym pracuję i pomyślałem, że podzielę się swoim rozwiązaniem.

Po pierwsze, aby rozwiązanie było bardziej przydatne do ponownego użycia, stworzyłem klasę bazową z właściwościami znacznika czasu:

public class EntityBase
{
    public DateTime? CreatedDate { get; set; }
    public DateTime? LastModifiedDate { get; set; }
}

Następnie nadpisałem metodę SaveChanges w moim DbContext:

public class MyContext : DbContext
{
    public override int SaveChanges()
    {
        ObjectContext context = ((IObjectContextAdapter)this).ObjectContext;

        //Find all Entities that are Added/Modified that inherit from my EntityBase
        IEnumerable<ObjectStateEntry> objectStateEntries =
            from e in context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
            where
                e.IsRelationship == false &&
                e.Entity != null &&
                typeof(EntityBase).IsAssignableFrom(e.Entity.GetType())
            select e;

        var currentTime = DateTime.Now;

        foreach (var entry in objectStateEntries)
        {
            var entityBase = entry.Entity as EntityBase;

            if (entry.State == EntityState.Added)
            {
                entityBase.CreatedDate = currentTime;
            }

            entityBase.LastModifiedDate = currentTime;
        }

        return base.SaveChanges();
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL CASE

  2. Instrukcja SQL UPDATE do przełączania dwóch wartości w dwóch wierszach

  3. Jak przechowywać wartości dziesiętne w SQL Server?

  4. Biblioteka natywna sqljdbc_auth.dll została już załadowana w innym programie ładującym klas

  5. Co to jest prosty program lub skrypt wiersza poleceń do tworzenia kopii zapasowych baz danych serwera SQL?