Jak*_*ton 14 c# linq lazy-loading eager-loading linq-to-sql
我有一个文档生成器,目前包含大约200个项目的查询,但完成后可能会超过500个.我最近注意到一些映射表示延迟加载.这给文档生成器带来了问题,因为它需要根据生成的文档访问所有这些属性.
虽然我知道DataLoadOptions可以在上下文中指定,但这会导致我必须明确指定可能加载的每一列.这是1000的北方,因为所有数据提取都发生在一个上下文中.
有没有办法让我为上下文禁用延迟加载或显式启用急切加载以忽略延迟加载属性?也许扩展DB上下文类并覆盖一些东西?
您将需要设置DeferredLoadingEnabled,然后使用一些反射包括每个属性,如:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6793 次 |
| 最近记录: |