当前位置: 首页 > 编程语言 > C#

禁用LINQ上下文的所有延迟加载或强制加载加载分享

时间:2023-04-10 14:43:21 C#

C#学习教程:DisableAllLazyorForcedLoadingofaLINQContext会有500多个,最近注意到有些映射表示延迟加载。这给文档生成器带来了问题,因为它需要根据生成的文档访问所有这些属性。虽然我知道可以为上下文指定的DataLoadOptions,但这导致我必须明确指定可能加载的每一列。这是1000以北,因为所有数据获取都发生在一个上下文中。有没有办法为上下文禁用延迟加载或显式启用预加载以忽略延迟加载属性?也许扩展数据库上下文类并覆盖某些东西?您将需要设置DeferredLoadingEnabled,然后将每个属性包含在其中,例如:DataLoadOptionsdataLoadOptions=newDataLoadOptions();foreach(PropertyInfopiintypeof(SomeThingyClass).GetProperties()){ParameterExpressionparamExp=Expression.Parameter(typeof(SomeThingyClass),"s");表达式expr=Expression.Convert(Expression.Property(paramExp,pi.Name),typeof(object));LambdaExpressionlambda=Expression.Lambda(expr,paramExp);dataLoadOptions.LoadWith((表达式>)lambda);LINQtoSQL很棘手。简而言之,这取决于。如果您的实体的布局方式使您的关系反映了这一点:Customers->Orders->OrderDetails并且您需要评估所有3个实体的属性才能做出决定,那么最好的办法是编写一个连接。使用.LoadWith将使用单个语句获取Customers和Orders,但随后会对每个OrderDetails记录发出查询。因此,即使您使用LoadWith指定了每个子关系,您也不会发出单个查询来检索结果。以上就是C#学习教程:禁用LINQ上下文的所有延迟加载或强制加载来加载所有的共享内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处: