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ừ 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. –
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
Đ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. –