I was a bit optimistic in my last post on EF. Turing off Lazy Loading (removing virtual) on a attribute does NOT imply eager loading. Documentation is unlcear but confirmed by internet -
“IMPORTANT: You could easily think that, once you disable Lazy Loading, the framework will auto-load each and every related property: it won’t.” - http://www.ryadel.com/en/enable-or-disable-lazyloading-in-entity-framework/
So I’m back to the .Include on each of my get methods to ensure consistency.
Not sure the argument “Don’t worry, it’s a good thing! You don’t want your DB to be automatically wasted on each Entity query request.” isn’t a bit of a cop out. I want to decide which of my attributes are composite – think car and wheels – and load those all the time.
Of course – I can do this with the .Include but its a bit less explicit. Making the attribute virtual again will at least means the serialisation falls over if I forgot to include the Lazy Load/Serialisation fails as it’s outside the context – so that at least enforces my aggregate.
No comments:
Post a Comment