sql >> Databáze >  >> RDS >> Sqlserver

Entity Framework/SQL2008 – Jak automaticky aktualizovat pole LastModified pro entity?

Vím, že jsem na večírek trochu pozdě, ale právě jsem to vyřešil kvůli projektu, na kterém pracuji, a myslel jsem, že se o své řešení podělím.

Za prvé, aby bylo řešení více znovu použitelné, vytvořil jsem základní třídu s vlastnostmi časového razítka:

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

Pak jsem přepsal metodu SaveChanges na mém 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. Import .csv se sloupcem časového razítka (dd.mm.yyyy hh.mm.ss) pomocí psql \copy

  2. Go SQL driver get interface{} hodnoty sloupce

  3. Načtěte data do rozbalovací nabídky ajax pomocí PHP MySql JQuery

  4. MySQL:Hledání řádků, které se neúčastní vztahu