nhibernate - Override lazy loading behavior 'lazy=false' -
i override default lazy loading behavior set in mappings 'lazy=false'. can't change many parts of existing application depend on setting.
after spent hours on didn't find solution i'm asking here. how this?
want achieve fine tune query load needed.
i've tried already:
using queryover api:
var properties = session.queryover<property>() .fetch(prop => prop.transactions).eager .fetch(prop => prop.districts).eager //i dont want load entities below mark //them lazy - doesn't work //i can see in sql getting loaded in separate queries .fetch(prop => prop.districts.first().aliases).lazy .fetch(prop => prop.districts.first().polygonpoints).lazy .skip(i * pagesize) .take(pagesize) .list(); using criteria api:
var criteria = session.createcriteria<property>(); criteria.setfetchmode("transactions", nhibernate.fetchmode.join); criteria.setfetchmode("districts", nhibernate.fetchmode.join); criteria.setfetchmode("districts.aliases", nhibernate.fetchmode.select); // tried lazy criteria.setfetchmode("districts.polygonpoints", nhibernate.fetchmode.select); // tried lazy criteria.addorder(nhibernate.criterion.order.asc("id")); criteria.setfirstresult(i * pagesize); criteria.setmaxresults(pagesize); var properties = criteria.list<property>(); using of above methods 'aliases' , 'polygonpoints' being loaded when calling list<>(). don't need them in process.
i'm using nhibernate 4.0.
ideas?
we cannot override mapping in case. can opposite way - have lazy in place - , use eager fetching querying.
the decision process (of reference loading) done outside of query, ex post. pre-loaded, cannot avoided.
solution here of 2 types.
- the first preferred (by me) - best , make laziness default: ayende - nhibernate lazy, live
- use
projections. instruct nhibernate create 1 query, use transformer expected object graph - without proxies in it
there pretty clear example how (properly) use projection list references:
and need custom result transformer, ex-post create references returned data:
- custom deepresulttransfomer
Comments
Post a Comment