2011-01-28 26 views
7

NHibernate 3.0.0 ve yeni özellik tembel özellikleri kullanıyorum. Ancak, bazı sorgularda, özellikleri heyecanla yüklemek istiyorum ve sorgunun proxy olmayan varlık örnekleriyle sonuçlanmasını istiyorum. Ayrıca LINQ sağlayıcısı veya QueryOver kullanmayı tercih ederim. Yani bu ilgili benim iki soru vardır: Ne özellikleri istekli yükleme "tüm özellikleri getir" ile HQL elde edilebilir biliyoruzNHibernate 3 tembel özellikleri ve istekli sorguları

  1. ama mümkün LINQ sağlayıcısı ile aynı şeyi ya QueryOver?
  2. "Tüm özellikleri getir" ibaresiyle bir HQL sorgusu yürütürsem, sonuçtaki varlıklar gerçekten hevesle yüklenir, ancak hala proksiye edilirler. Bundan kaçınmanın bir yolu var mı?

Alkış

+0

Vekil varlıkları özel olarak sorun nedir? –

+1

WCF kullanarak varlığı iletmek işe yaramaz. – Yhrn

cevap

4

Soru 1 için: Yanıt hayır, 'tüm özellikleri getir' http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties'de açıklandığı gibi şu anda yalnızca HQL'de desteklenmektedir.

NH Google Tartışmalarda bir yerlerde görmeyi hatırlıyorum, bulamadı. Bugün bulabilirsem, cevabı günceller. Ancak mevcut 3.1 sürümünden itibaren sadece HQL'de.

Soru 2 için: Bunu önlemek için bir yol olup olmadığını bilmiyorum, genellikle DTO'lara dönüştürüyorum ve WCF kullanırken NH Poco'yu değil DTO'yu seri hale getiriyorum. Leonardo'nun linki ilginç görünüyor ve yardımcı olabilir.

+0

@Yhrn - Maalesef, NHUsers'ın NH3 ya da gelecekteki sürümlerde olup olmayacağını soran birisiyle ilgili iş parçacığını bulamıyor. Ancak, bunları bir projeksiyona dahil ederseniz, özellikleri almaya hevesli olabileceğinizi buldunuz. – Phill

0

Sen http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/ Sınıflarınızdan (hiçbir yakınlık) tembel yük de devre dışı bırakmak için bu
Mülklerinizin istekli yüke
bu http://nhibernate.info/doc/nh/en/index.html#querycriteria-dynamicfetching kullanabilirsiniz kullanabilirsiniz Yoksa bu http://www.timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx deneyebilirsiniz ve hala proxy'leri kullanın.

+1

Bağlantınızdaki özelliklerin getirilmesi, belirli sütunlarla değil, ilişkilerle ilgilidir. Bir "post" un 'content' özelliği tembel yükleme/istekli yükleme gibi. Yhrn şu anda HQL dışında bir şey tarafından desteklenmeyen http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties hakkında konuşuyor. – Phill

+0

Siz doğru Phill. Soruyu çok hızlı okudum ve yanlış cevap verdim. Teşekkürler. –

+0

@Phill Haklı olduğunuzu ve hem sorularımın hem de “hayır” olduğunu (en azından şimdilik, gelecekteki sürümlerin ne getireceğini bilenler) verdiğine inanıyorum. Bu konuda kendinize güveniyorsanız, yorumunuzu bir cevaba dönüştürmekten çekinmeyin ve bunu kabul ediyorum. – Yhrn

İlgili konular