Soru NHibernate için Linq ve istekli yükleme getirme modu


Fetchmode nhibernate için linq kullanarak birden fazla nesne için istekli için ayarlamak için bir yolu var mı. Sadece bir nesne belirlememe izin veren bir genişleme yöntemi var gibi görünüyor. Ancak, onu birden fazla nesne için ayarlamanız gerekiyor. Mümkün mü? Teşekkürler


44
2018-05-06 21:13


Menşei




Cevaplar:


sadece bir kez daha kullanın.

IList<Entity> GetDataFromDatabase()
{
    var query = session.Linq<Entity>();
    query.Expand("Property1");
    query.Expand("Property2");
    return query.ToList();
}

18
2018-05-06 23:57



veya query.Expand ("Property1, Property2"); - Sprintstar
Bu bir genişleme metodu mu? NHibernate.Linq v2.0.50727 içinde bulamıyor. - Arnis Lapsa
Yani, 1.0.0.0 sürümü - Arnis Lapsa
O orada, NHibernate.Linq.Query <T> - liammclennan


Yeni Linq sağlayıcısı bunu biraz farklı yapıyor:

var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();

Daha fazla burada: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html


102
2017-08-06 11:22



Eğer Orders kendi alt sınıfına sahip, hevesle yüklenir mi? değilse - yüklemek için sorguyu nasıl değiştirirsiniz? - ilans
Torun almak için: var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList(); - ilans


Görebildiğim kadarıyla, bu eşdeğer değildir: SetFetchMode bir nesne ağacını nemlendirir ve Genişlet yöntemi bir kartezyen ürünü alır.


8
2017-09-20 20:23





İle uyumlu olarak @Mike Hadlow Cevap, yapmanız gereken bir sonraki seviye (torun) getirme:

var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();


0
2017-12-15 13:15