sql >> Database >  >> RDS >> Sqlserver

Entity Framework/SQL2008 - Hoe LastModified-velden voor entiteiten automatisch worden bijgewerkt?

Ik weet dat ik een beetje laat op het feest ben, maar ik heb dit net opgelost voor een project waar ik aan werk en dacht ik deel mijn oplossing.

Ten eerste, om de oplossing meer herbruikbaar te maken, heb ik een basisklasse gemaakt met de tijdstempeleigenschappen:

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

Daarna heb ik de SaveChanges-methode op mijn DbContext overschreven:

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. Een rij van de ene tabel naar de andere verplaatsen (Invoegen lijst met waarden komt niet overeen met kolomlijst)

  2. Kun je een mysql-resultaatset in PHP hergebruiken?

  3. SQL Server-systeemdatabases - het Tempdb-onderhoud

  4. Afstand berekenen tussen 400 steden en MySQL daarvoor optimaliseren?