2010-01-06 25 views
6

Tất cả các thực thể NH của tôi lấy từ một loại gọi là BusinessEntity, nó có các giá trị cơ bản nhất ID, Created, CreatedBy, Updated, UpdatedBy.Bộ sưu tập ngoại lệ NHibernate [..User.Groups] không được xử lý bởi flush()

CreatedBy/UpdatedBy mất một tài

Tôi có một IPreUpdateEventListener và IPreInsertEventListener rằng lửa để có được DateTime hiện hành đối với các giá trị kiểm toán. Ngoài ra ở đây tôi có logic của tôi để có được người dùng hiện tại đang chạy mà tôi lấy bằng cách chạy truy vấn tiêu chí so với nguyên tắc người dùng cửa sổ. Từ những gì tôi hiểu từ tất cả các bài đăng trên các nhóm người sử dụng NH về chủ đề này lớp người dùng của tôi cần được háo hức nạp để làm việc này một cách chính xác trong EventListeners tôi đây là cách tôi tải người dùng

public User GetByDomainPrinciple(string domainPrinciple) 
{ 
    var domainPrincipleCriteria = DetachedCriteria.For<User>() 
     .Add(Restrictions.Eq("DomainPrinciple", domainPrinciple)) 
     .SetFetchMode("Roles", FetchMode.Eager) 
     .SetFetchMode("Groups", FetchMode.Eager) 
     .SetFetchMode("Groups.Roles", FetchMode.Eager) 
     .SetCacheable(true); 

    return Repository.QuerySingle(domainPrincipleCriteria); 
} 

Repository.QuerySingle(domainPrincipleCriteria); chỉ là

return detachedCriteria 
.GetExecutableCriteria(_conversation.Session).UniqueResult<T>(); 

Tôi có thiếu gì đó hoặc truy vấn tiêu chí của mình sai? Tôi đoán tuyệt đối trường hợp xấu nhất kịch bản tôi có thể thay đổi CreatedBy là một Guid thay vì một người dùng và chỉ cần gán thủ công FK như thế, nhưng điều đó có vẻ rất bẩn.

Trả lời

1

Tôi nghĩ điều này có thể giúp ích cho bạn. Lỗi xuất phát từ PreUpdateEventListener. Tôi đã có cùng một vấn đề trong khi trở lại.

http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx

+1

Trừ khi tôi bỏ lỡ điều gì đó hữu ích trong nhận xét này không hữu ích. Đây là nơi tôi nhận mã cho người nghe sự kiện của mình ngoại trừ tôi gọi NH từ người nghe sự kiện để có được người dùng thay vì sử dụng nguyên tắc cửa sổ như ví dụ của anh ta. –

+0

Tôi nghĩ rằng nếu bạn đang tải bất cứ điều gì trong đó nó sẽ cung cấp cho bạn lỗi này. Tôi đã cố gắng để có được một câu trả lời cho câu hỏi này trong NH nhóm người dùng cũng, cũng như vài folks khác, không có câu trả lời. http://groups.google.com/group/nhusers/browse_thread/thread/1db7fd843b0b4b56/cdaa52f93e94e167?hl=vi&lnk=gst&q=epitka#cdaa52f93e94e167. Tôi xin lỗi tôi đã không được giúp đỡ nhiều hơn nữa. – epitka

+0

Điều này không hữu ích lắm, vì vậy tôi ngạc nhiên nó được đánh dấu là giải pháp. –

Các vấn đề liên quan