Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Entity Framework/SQL2008 - Как автоматично да актуализирате LastModified полета за Entities?

Знам, че малко закъснях за партито, но току-що реших това за проект, върху който работя, и реших да споделя своето решение.

Първо, за да направя решението по-използваемо многократно, създадох базов клас със свойствата на клеймото за време:

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

След това отмених метода SaveChanges на моя 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. Как да зададете първичен ключ при свързване с CreateTableDef

  2. SSIS пакетът не иска да извлича метаданни на временна таблица

  3. Как да получите експортиран изход в реален CSV формат в SQL Server Management Studio?

  4. Върнете всички файлови групи за текущата база данни в SQL Server

  5. Изберете в израз, където източникът е друга база данни