Tôi không hiểu những gì bạn có ý nghĩa với "Tôi đã tải lười biếng". Tải chậm là một tính năng, tính năng này được bật theo mặc định và bạn có thể tắt tính năng này nếu không thích.
Có hai loại tải chậm: để tham chiếu đến các thực thể khác và cho danh sách.
Với tổ chức này:
class Entity
{
// pk
int id { get; private set; }
// reference to another entity
User MyUser { get; set; }
// list to other entities
IList<Comments> MyComments { get; set; }
}
Lazy tải trên tham chiếu đến tài
Nếu bạn có lười tải trên tài khoản, bạn cần phải xác định tất cả các thành viên của lớp tài khoản ảo. NHibernate sẽ tạo ra một proxy được gọi là. Proxy là một lớp được định nghĩa trong thời gian chạy có nguồn gốc từ Người dùng. Mã của bạn đang truy cập nó dưới dạng Người dùng và không biết rằng đó là một lớp con. Nhưng khi bạn truy cập một trong những thành viên của nó lần đầu tiên, các thuộc tính được nạp từ cơ sở dữ liệu.
Nếu bạn muốn tắt tải lười biếng trên lớp dùng, bạn cần phải làm điều này trong bản đồ của nó:
<class name="User" lazy="false"> ...
Sau đó NHibernate luôn tạo ra thể hiện của loại tài khoản, không có proxy. Bạn không cần phải có bất cứ điều gì ảo.
Lazy tải thuộc danh mục bình luận
Nếu bạn sử dụng tải lười biếng thuộc danh mục bình luận, nó là danh sách riêng của mình mà thực hiện việc bốc lười biếng. Nếu bạn truy cập vào danh sách lần đầu tiên, nó sẽ được tải từ cơ sở dữ liệu. NHibernate sử dụng một danh sách thực hiện IList, nhưng không phải là List.
Nếu bạn muốn tắt tải lười biếng trong danh sách, bạn làm điều này trong các bản đồ của Entity:
<class name="Entity">
<bag name="MyComments" lazy="false" >
...
Thông thường, lười tải là một điều tốt, và bạn áp dụng không nhất thiết phải quan tâm đến nó nhiều. Nhưng có một số rủi ro. Ví dụ, nếu bạn tuần tự hóa một cá thể, và nó là một proxy, bạn sẽ nhận được một proxy không được khởi tạo thay vì bất cứ điều gì hữu ích. Tải xuống chỉ hoạt động miễn là phiên được mở. Nó không phải luôn luôn nhanh hơn để sử dụng tải lười biếng. Tuy nhiên, nếu bạn cần tải tất cả dữ liệu, tải xuống nhanh hơn một đoạn.
Vì vậy, cấu hình cần được thực hiện cẩn thận.
Edit:
Để trả lời câu hỏi ban đầu của bạn: Sản lười tải cần thiết cho NHibernate? Không. Nhưng: Có phải tải chậm trong ứng dụng của tôi không? Có lẽ là có.
Tôi nghĩ rằng, chỉ những ứng dụng nhỏ và nhỏ hơn không cần tải chậm. Nếu bạn có một hệ thống với nhiều lớp liên tục, bạn sẽ cần tải chậm.
Một phần khác được thêm vào trong câu trả lời của tôi. –