如何删除或还原DataContext.DataLoadOptions?

时间:2010-09-22 18:37:48

标签: c# .net linq linq-to-sql

首先让我先解释一下我的用例:

假设有一个数据库“汽车”。在该数据库中,每行可能包含Make,Model,EngineType等。我有一个页面,基本上是单个“Car”记录的视图,显示其各种统计信息。在该页面中,我有一个用户控件,可根据“Car”记录计算和显示各种MPG统计数据。用户控件通过属性传递“Car”记录,然后在内部使用它进行计算。

在该用户控件中,会发生类似这样的事情:

private void DataBindGrid()
{
    gridView.DataSource = this.CarRecord.GetMPGStats();
}

“CarRecord”内部是一个LINQ-to-SQL查询,使用CarRecord的数据上下文。出于此计算的目的,执行此操作会更有效:

private void DataBindGrid()
{
    DataLoadOptions dlo = new DataLoadOptions();

    dlo.LoadWith<Car>(c => c.Engine);

    this.CarRecord.DataContext.LoadOptions = dlo;

    gridView.DataSource = this.CarRecord.GetMPGStats();
}

出于本示例的目的,忽略这对于传入记录和/或记录的用户控件是否是一个糟糕的设计。的datacontext。

以下是我看到的问题:

  • 在将记录传递给用户控件之前,页面可能已设置了自己的加载选项,导致查询效率低下。
  • 当用户控件继续使用Car记录本身时,页面可能不需要用户控件指定的新设置。

所以我有两个问题:

  1. “清除”LoadOptions的最佳方法是什么?只需设置DataContext.LoadOptions = new DataLoadOptions();= null;
  2. 即可
  3. 有没有办法设置某种临时的LoadOptions只影响某个操作,然后再恢复到之前的状态?
  4. 提前致谢。

1 个答案:

答案 0 :(得分:1)

始终必须在执行第一个查询之前设置数据加载选项。一旦查询执行,你就无法用它们做任何事情。