Tôi đang xem lại và triển khai lại mã đã khiến tôi yêu cầu this question về kiểm tra dữ liệu trong NHibernate. Tuy nhiên thời gian này, tôi muốn đi với Sean Carpenter 's suggestion và triển khai ISaveOrUpdateEventListener (mới trong NHibernate 2.x)Kiểm tra dữ liệu trong NHibernate bằng các sự kiện
Tôi muốn thêm một hàng trong cơ sở dữ liệu cho mỗi thay đổi cho mỗi thuộc tính với giá trị cũ và mới vì vậy sau này trong giao diện người dùng, tôi có thể nói các nội dung như "Người dùng Bob đã thay đổi thuộc tính Wibble từ A thành B vào ngày 9 tháng 3 năm 2009 lúc 21:04"
Cách tốt nhất để so sánh trạng thái đối tượng là gì các thuộc tính của đối tượng đã thay đổi?
Bạn có thể nhận được trạng thái nạp của đối tượng bằng cách như sau:
public void OnSaveOrUpdate(SaveOrUpdateEvent saveOrUpdateEvent)
{
object[] foo = saveOrUpdateEvent.Entry.LoadedState;
}
Và tôi cho rằng tôi có thể sử dụng phản ánh để làm việc ra mà thuộc tính đã thay đổi, nhưng tôi đã được đào bới xung quanh và có doesn' t dường như là một tập hợp các thuộc tính để so sánh. Tôi đã nghĩ rằng sẽ có một phương thức GetChangedProperties() hoặc một cái gì đó.
Tôi luôn có thể lấy đối tượng cũ từ cơ sở dữ liệu như nó và so sánh nó, nhưng đó lại là một cơ sở dữ liệu khác và có vẻ nặng nề trong kịch bản này.
Hướng tốt nhất để thực hiện điều này là gì?
P.S. Trong trường hợp nó tạo ra bất kỳ sự khác biệt nào, đây là một dự án ASP.NET-MVC/S # arp Architecture.
này đã làm việc cho tôi. Cảm ơn mookid. –
Cảm ơn "và lấy tên của thuộc tính đã thay đổi từ 'tên'". Tôi đã ở trên mạng trong 15 phút tìm kiếm một cách đáng tin cậy để đối sánh đối tượng với các giá trị. – SamuelKDavis