NHIbernate 4'ü asp.net mvc 4 (.net 4) uygulamamızda kullanıyoruz. NHibernate 4'ün davranışının ikinci seviye önbellekleme söz konusu olduğunda biraz değiştiğini söyleyebilirim.NHibernate 4: İkinci düzey önbellek kullanımı için temkinli yük çocuk koleksiyonları
aşağıdaki davranış (hatam varsa düzeltin lütfen) değişmiş gibi görünüyor:
- artık ikinci düzey önbellek
- kullanırken gibi bir sorgu çalıştırdığınızda gerekli bir işlem yoktur (Hibsession .Query(). Burada (x => x.Name == "x") ToList()), daha sonra entit varlık için sorgulayacaktır. NHibernate'in önceki sürümlerinde - doğru hatırlıyorsam - yalnızca kimliğin kimliği alınacaktı.
İkinci seviye sadece aşağıdaki durumlarda geçerlidir geliyor bana:
using (var hibSession = SessionFactory.OpenSession())
{
// Second level cache working
var entity = hibSession.Get<ChachedEntity>(7); // second level cache working
var parent = entity.ParentElement; // second level cache working because n:1
// Probably working (not tested)
var elements = hibSession.Query<ChachedEntity>().Cacheable().Take(30).ToList(); // guessed behaviour: query-cache selects id's and then then uses second level cache
// second level cache NOT Working
var children = entity.ChildCollectionWithCachableEntities; // second level cache NOT working because 1:n (!!)
}
Sorularım şimdi şunlardır:
- Nerede tarif NHibernate 4 ikinci seviye önbellek davranıştır (veya en azından belgelenen 3 sürümüne geçer)
- Tembel yükleme alt öğeleri için ikinci düzey önbelleği kullanmak mümkün mü? (Veya en azından sadece id en yüklü olduğundan emin olmak ve daha sonra ikinci seviye önbellek varlıkları materialize var) önceden
Teşekkür