sql >> Databasteknik >  >> RDS >> Sqlserver

Entity Framework/SQL2008 - Hur uppdaterar man automatiskt LastModified-fält för Entities?

Jag vet att jag är lite sen till festen, men jag löste det här för ett projekt jag jobbar på och tänkte dela med mig av min lösning.

Först, för att göra lösningen mer återanvändbar, skapade jag en basklass med tidsstämpelegenskaperna:

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

Sedan åsidosatte jag SaveChanges-metoden på min 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. Rails SELECT 40001 SQL_NO_CACHE avfyrade från okänd plats

  2. ansluta till databasen med RMySQL, R och MySQL

  3. ORA-00054:resurs upptagen och förvärv med NOWAIT specificerad

  4. Hur söker man i en enum i lista med strängar med postgresql-fråga?