DataLoadOptions 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对相关数据的即时加载和筛选。
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 使用情况的规则:
- 执行第一个查询后,向 a DataContext 分配一DataLoadOptions个异常。
- DataLoadOptions在将它分配给DataContext生成异常后对其进行修改。
句柄周期
LoadWith 和 AssociateWith 指令不得创建周期。 下面表示此类图形的示例:
示例 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个子句也会应用于所有子句A。A
- 在示例 4 中,子
构造函数
| 名称 | 说明 |
|---|---|
| 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) |