Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Entity Framework / SQL2008 - Làm thế nào để tự động cập nhật các trường LastModified cho các đối tượng?

Tôi biết mình đến bữa tiệc hơi muộn, nhưng tôi vừa giải quyết vấn đề này cho một dự án mà tôi đang thực hiện và nghĩ rằng tôi sẽ chia sẻ giải pháp của mình.

Đầu tiên, để làm cho giải pháp có thể tái sử dụng nhiều hơn, tôi đã tạo một lớp cơ sở với các thuộc tính dấu thời gian:

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

Sau đó, tôi ghi đè phương thức SaveChanges trên DbContext của mình:

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. Kết quả được phân tách bằng dấu phẩy trong SQL

  2. Tìm kiếm CHARINDEX và LIKE cho hiệu suất rất khác nhau, tại sao?

  3. Các tính năng hàng đầu cần tìm trong Công cụ giám sát máy chủ SQL

  4. SQL Server CTE -Tìm ID cha mẹ hàng đầu cho mỗi ID con?

  5. Tạo tên ngẫu nhiên trong sql