tôi có một đối tượng Diện tích trong đó có nhiều trẻ em tiểu vùng:NHibernate lưu/cập nhật các thính giả sự kiện: nghe cho đối tượng trẻ em tiết kiệm
public class Area
{
...
public virtual IList<SubArea> SubAreas { get; set; }
}
anh trẻ em được ánh xạ như một mối quan hệ uni-directional phi nghịch đảo:
public class AreaMapping : ClassMap<Area>
{
public AreaMapping()
{
HasMany(x => x. SubAreas).Not.Inverse().Cascade.AllDeleteOrphan();
}
}
Khu vực là gốc tổng hợp của tôi. Khi tôi lưu một khu vực (ví dụ: Session.Save (khu vực)), khu vực được lưu và SubAreas con sẽ tự động cascaded.
Tôi muốn thêm trình lưu sự kiện để lưu hoặc cập nhật để nắm bắt bất cứ khi nào các khu vực của tôi và/hoặc subareas được lưu giữ. Nói ví dụ tôi có một khu vực, trong đó có 5 SubAreas. Nếu tôi móc vào SaveEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Khi tôi tiết kiệm diện tích, myListener chỉ bắn lần chỉ dành cho khu vực (SubAreas được bỏ qua). Tôi muốn 5 SubAreas bị bắt gặp trong người nghe sự kiện. Nếu tôi móc vào SaveOrUpdateEventListeners thay vì:
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Khi tôi tiết kiệm diện tích, myListener là không bắn vào tất cả. Kỳ lạ thay, nếu tôi móc vào SaveEventListeners và SaveOrUpdateEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Khi tôi tiết kiệm diện tích, myListener là bắn 11 lần: một lần cho khu vực này, và hai lần cho mỗi tiểu vùng! (Tôi nghĩ vì NHIbernate là INSERTing SubArea và sau đó UPDATING với khóa ngoài khu vực).
Có ai biết tôi đang làm gì sai ở đây hay không và cách tôi có thể khiến người nghe kích hoạt một lần cho từng khu vực và khu vực phụ?
bạn có làm việc này không? gặp vấn đề tương tự – andy
Tôi cũng thế! Có ai tìm ra giải pháp không? – nozzleman