Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Entity Framework/SQL2008 - Bagaimana cara Memperbarui bidang LastModified secara Otomatis untuk Entitas?

Saya tahu saya agak terlambat ke pesta, tetapi saya baru saja menyelesaikan ini untuk proyek yang sedang saya kerjakan dan saya pikir saya akan membagikan solusi saya.

Pertama, untuk membuat solusi lebih dapat digunakan kembali, saya membuat kelas dasar dengan properti timestamp:

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

Kemudian saya mengganti metode SaveChanges di DbContext saya:

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. GETUTCDATE() Contoh di SQL Server (T-SQL)

  2. Unicode SQL Query W/ Parameter bukan N Prefix

  3. Bagaimana saya bisa memasukkan data file biner ke dalam bidang SQL biner menggunakan pernyataan penyisipan sederhana?

  4. Apakah kunci utama sudah ketinggalan zaman?

  5. Cara Mendapatkan OBJECT_NAME() dari Database Berbeda di SQL Server