DataLoadOptions 类

定义

提供对相关数据的即时加载和筛选。

public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
继承
DataLoadOptions

示例

从 Northwind 示例数据库检索 Customers 时,可以使用 DataLoadOptions 它指定要 Orders 检索的。 甚至可以指定要检索的 Orders 子集。

注解

DataLoadOptions 类提供立即加载和筛选相关数据。

查询对象时,实际上只检索所请求的对象。 相关对象不会同时自动提取。 有关详细信息,请参阅 跨关系查询

DataLoadOptions 类提供了两种方法,用于立即加载指定的相关数据。 该方法 LoadWith 允许立即加载与主目标相关的数据。 该方法 AssociateWith 允许筛选相关对象。

规则

请考虑以下有关 DataLoadOptions 使用情况的规则:

句柄周期

LoadWithAssociateWith 指令不得创建周期。 下面表示此类图形的示例:

  • 示例 1:自递归

    • dlo.LoadWith<Employee>(e => e.Reports);
  • 示例 2:后退指针

    • dlo.LoadWith <Customer>(c => C.Orders);
    • dlo.LoadWith <Order>(o => o.Customer);
  • 示例 3:较长的周期数

    尽管这不应发生在规范化的模型中,但有可能。

    • dlo.LoadWith <A>(a => a.Bs);
    • dlo.LoadWith <B>(b => b.Cs);
    • dlo.LoadWith <C>(c => c.As);
  • 示例 4:自递归子查询

    • dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
  • 示例 5:较长的递归子查询

    • dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));
    • dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));

以下常规规则可帮助你了解这些方案中发生的情况:

  • LoadWith:每次调用以 LoadWith 检查是否已将周期引入到图形中。 如果示例 1、2 和 3 中存在异常,则会引发异常。

  • AssociateWith:在运行时,引擎不会将现有的 SubQuery 子句应用于表达式内的关系。

    • 在示例 4 中,子 Where 句针对所有 A子句执行,而不仅仅是由 SubQuery 表达式本身筛选的子句(因为这将是递归的)。
    • 在示例 5 中,第一个Where子句应用于所有 Bs,即使存在子查询。B 即使存在子查询,第二Where个子句也会应用于所有子句AA

构造函数

名称 说明
DataLoadOptions()

初始化 DataLoadOptions 类的新实例。

方法

名称 说明
AssociateWith(LambdaExpression)

筛选为特定关系检索的对象。

AssociateWith<T>(Expression<Func<T,Object>>)

筛选为特定关系检索的对象。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
LoadWith(LambdaExpression)

使用 lambda 表达式检索与主目标相关的指定数据。

LoadWith<T>(Expression<Func<T,Object>>)

指定要在为 T 类型的对象提交查询时检索的子对象。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于