2011-01-28 33 views
7

Tôi đang sử dụng NHibernate 3.0.0 và tính năng mới lười biếng tính năng. Tuy nhiên, trong một số truy vấn, tôi muốn tải các thuộc tính một cách háo hức và tôi muốn truy vấn dẫn đến các cá thể thực thể không được ủy quyền. Tôi cũng thích sử dụng nhà cung cấp LINQ hoặc QueryOver. Vì vậy, hai câu hỏi của tôi liên quan đến này là:NHibernate 3 thuộc tính lười biếng và truy vấn háo hức

  1. Tôi biết rằng tải háo hức của thuộc tính có thể đạt được trong HQL với "lấy toàn bộ tài sản" nhưng là nó có thể làm tương tự với các nhà cung cấp LINQ hoặc QueryOver?
  2. Nếu tôi thực hiện truy vấn HQL với "tìm nạp tất cả thuộc tính", các thực thể trong kết quả thực sự được tải sẵn nhưng chúng vẫn được ủy quyền. Có cách nào để tránh điều này không?

Cheers

+0

Vấn đề cụ thể với việc có các thực thể được ủy quyền là gì? –

+1

Truyền thực thể bằng WCF sẽ không hoạt động, ví dụ. – Yhrn

Trả lời

4

Đối với câu hỏi 1: Câu trả lời là không, 'tìm nạp tất cả các thuộc tính' như mô tả trong http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties hiện chỉ được hỗ trợ trong HQL.

Tôi nhớ đã nhìn thấy trong NH Google Discussions ở đâu đó, tôi không thể tìm thấy chuỗi. Sẽ cập nhật câu trả lời nếu tôi có thể tìm thấy nó ngay hôm nay. Nhưng kể từ phiên bản 3.1 hiện tại, nó chỉ có trong HQL.

Đối với câu hỏi 2: Tôi không biết nếu có cách nào để tránh điều này, tôi thường chuyển đổi thành DTO và sắp xếp DTO, không phải NH Poco, khi sử dụng WCF. Liên kết của Leonardo có vẻ thú vị và có thể giúp bạn.

+0

@Yhrn - Xin lỗi bạn đời, không thể tìm thấy chuỗi trên NHUsers để làm với ai đó hỏi xem nó có nằm trong bản phát hành NH3 hay trong tương lai hay không. Tuy nhiên, bạn thấy rằng bạn có thể háo hức tìm nạp các thuộc tính nếu bạn đưa chúng vào một phép chiếu. – Phill

0

Bạn có thể sử dụng này http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/ để vô hiệu hóa de tải lười biếng của các lớp học của bạn (không có proxy)
Bạn có thể sử dụng này http://nhibernate.info/doc/nh/en/index.html#querycriteria-dynamicfetching để tải háo hức tài sản của bạn
Hoặc bạn có thể thử http://www.timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx này và vẫn sử dụng proxy.

+1

Việc tìm nạp thuộc tính trong liên kết của bạn là liên quan đến các mối quan hệ, chứ không phải các cột cụ thể. Chẳng hạn như tải xuống/háo hức tải nội dung 'nội dung' của 'bài đăng'. Yhrn đang nói về http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties không được hỗ trợ bởi bất kỳ điều gì khác ngoài HQL vào lúc này. – Phill

+0

Bạn đúng là Phill. Tôi đọc câu hỏi quá nhanh và trả lời sai. Cảm ơn. –

+0

@Phill Tôi tin rằng bạn đúng và câu trả lời cho cả hai câu hỏi của tôi đơn giản là "không" (ít nhất là bây giờ, ai biết được những phát hành trong tương lai nào có thể mang lại). Nếu bạn cảm thấy tự tin về điều đó, vui lòng chuyển đổi nhận xét của bạn thành câu trả lời và tôi sẽ chấp nhận nó. – Yhrn

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