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

NHibernate IPreUpdateEventListener, IPreInsertEventListener không lưu vào DB

Câu trả lời sẽ được ẩn / tiết lộ trong trích dẫn này từ bài báo của Ayende

Đây là mã hiển thị cách thực hiện từ cùng một bài viết:

public class AuditEventListener : IPreUpdateEventListener, IPreInsertEventListener
{
    public bool OnPreUpdate(PreUpdateEvent @event)
    {
        var audit = @event.Entity as IHaveAuditInformation;
        if (audit == null)
            return false;

        var time = DateTime.Now;
        var name = WindowsIdentity.GetCurrent().Name;

        Set(@event.Persister, @event.State, "UpdatedAt", time);
        Set(@event.Persister, @event.State, "UpdatedBy", name);

        audit.UpdatedAt = time;
        audit.UpdatedBy = name;

        return false;
    }

    public bool OnPreInsert(PreInsertEvent @event)
    {
        var audit = @event.Entity as IHaveAuditInformation;
        if (audit == null)
            return false;


        var time = DateTime.Now;
        var name = WindowsIdentity.GetCurrent().Name;

        Set(@event.Persister, @event.State, "CreatedAt", time);
        Set(@event.Persister, @event.State, "UpdatedAt", time);
        Set(@event.Persister, @event.State, "CreatedBy", name);
        Set(@event.Persister, @event.State, "UpdatedBy", name);

        audit.CreatedAt = time;
        audit.CreatedBy = name;
        audit.UpdatedAt = time;
        audit.UpdatedBy = name;

        return false;
    }

Và đây là Set() kỳ diệu

private void Set(IEntityPersister persister, object[] state
       , string propertyName, object value)
{
    var index = Array.IndexOf(persister.PropertyNames, propertyName);
    if (index == -1)
        return;
    state[index] = value;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng mysql cập nhật Wordpress

  2. Soft_delete của Laravel có cần chỉ mục trên MySQL không?

  3. Tệp khóa MySQL không chính xác cho bảng tmp khi thực hiện nhiều phép nối

  4. Nhận tất cả người dùng ngoại trừ người dùng đã đăng nhập hiện tại trong laravel hùng hồn

  5. Cách chèn mảng json vào cơ sở dữ liệu mysql