Tôi đang cố gắng thêm một triển khai IPostLoadEventListener vào cấu hình NHibernate của mình bằng cách sử dụng FluentNHibernate. Tôi có thể làm như vậy như minh họa ở đây:Trình nghe sự kiện NHibernate
how to add event listener via fluent nhibernate?
Tuy nhiên, việc tạo ra một mảng mới để thay thế cái cũ hoàn toàn loại bỏ bất kỳ người nghe sự kiện hiện có. Tôi có thể tham gia như vậy:
return Fluently.Configure()
.Database(config)
.Mappings(m => m.AutoMappings.Add(mappings))
.ExposeConfiguration(cfg =>
{
cfg.EventListeners.PostLoadEventListeners =
new IPostLoadEventListener[] {
new UtcDateEventListener(),
new DefaultPostLoadEventListener() // <<< this one is the default
};
cfg.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] {
new UtcDateEventListener(),
new DefaultSaveOrUpdateEventListener() // <<< this one is the default
};
})
.BuildConfiguration()
.BuildSessionFactory();
Nhưng tôi chỉ biết về trình xử lý sự kiện mặc định bằng cách bước qua mã để xác định nội dung tôi đã ghi đè. Tôi muốn thêm người nghe sự kiện của mình mà không ghi đè bất kỳ người nghe sự kiện hiện có nào, nhưng làm như vậy tôi đã trình bày ở trên dường như rất có mùi, đối với tôi. Trình lắng nghe sự kiện hiện có được hiển thị dưới dạng một mảng (chứ không phải là một bộ sưu tập hoặc danh sách, điều này sẽ có ý nghĩa hơn). Có cách nào sạch hơn để xử lý việc này không?
Tuy nhiên, đây là một bài đăng cũ, nhưng tôi đã tìm thấy một liên kết thú vị tại đây: http://codebetter.com/petervanooijen/2015/04/13/using-nhibernate -eventlisteners-to-validate-and-audit-data/ – shankbond