Tôi có câu hỏi về DefaultUpdateEventListener trong NHibernate. Mình sẽ cập nhật 2 đối tượng rồi submit session.
Đối tượng đầu tiên không vào được người nghe, đối tượng thứ hai sẽ vào đó.
Vì vậy, tôi đã sử dụng một tấm phản xạ để kiểm tra xem vấn đề là gì.
Đầu tiên, NHibernate sẽ gọi PerformanceSaveOrUpdate trong DefeultSaveOrUpdateEventListener.
đối tượng ảo được bảo vệ PerformanceSaveOrUpdate(SaveOrUpdateEvent @event)
{
chuyển đổi (this.GetEntityState(@event.Entity, @event.EntityName, @event.Entry, @event.Session))
{
trường hợp EntityState.Persistent:
trả lại cái này.EntityIsPersistent(@event);
trường hợp EntityState.Detached:
this.EntityIsDetached(@event);
return null;
}
trả lại cái này.EntityIsTransient(@event);
}
Sự khác biệt giữa hai đối tượng là trạng thái của đối tượng thứ nhất được tách ra và đối tượng thứ hai được duy trì
Điều gì khiến một đối tượng tồn tại lâu dài hoặc tách rời trong NHibernate?
Nếu tôi biết ví dụ này có gì khác biệt thì tôi hy vọng tôi có thể sửa lỗi này trong mã của mình.
Tải của cả hai đối tượng bằng session.Load
Tôi đã giải quyết việc thực hiện
Sự cố với ghi đè công khai void OnSaveOrUpdate(SaveOrUpdateEvent @event)
Sự kiện này sẽ được kích hoạt trước PerformanceSaveOrUpdate(SaveOrUpdateEvent @event)
Tại thời điểm này, việc đối tượng tồn tại lâu dài hay tách rời không còn quan trọng nữa.
Tôi là một lập trình viên xuất sắc, rất giỏi!