I have a document generator which contains queries for about 200 items at the moment but will likely be upwards of 500 when complete. I've recently noticed that some of the mappings denote lazy loading. This presents a problem for the document generator as it needs access to all of these properties based on which document is being generated.
While I am aware of the DataLoadOptions
that can be specified to the context, this would result in me having to explicitly specify every column that could possibly be loaded. That is north of 1000 as it all of the data fetching takes place in one context.
Is there any way for me to disable lazy loading for a context or explicitly enable eager loading to ignore the defer loading property? Perhaps extending the DB context class and overriding something?
You will need to set DeferredLoadingEnabled
, and then include every property using some reflection like:
DataLoadOptions dataLoadOptions = new DataLoadOptions();
foreach (PropertyInfo pi in typeof(SomeThingyClass).GetProperties())
{
ParameterExpression paramExp = Expression.Parameter(typeof(SomeThingyClass), "s");
Expression expr = Expression.Convert(Expression.Property(paramExp, pi.Name), typeof(object));
LambdaExpression lambda = Expression.Lambda(expr, paramExp);
dataLoadOptions.LoadWith((Expression<Func<SomeThingyClass, object>>) lambda);
}