Как удалить или отменить DataContext.DataLoadOptions? - PullRequest
0 голосов
/ 22 сентября 2010

Сначала позвольте мне начать с объяснения моего варианта использования:

Скажем, есть база данных "Автомобили". В этой базе данных каждая строка может иметь «Марка», «Модель», «Тип двигателя» и т. Д. У меня есть страница, которая по сути является представлением одной записи «Автомобиль», отображающей ее различные характеристики. На этой странице у меня есть пользовательский элемент управления, который вычисляет и отображает различные статистические данные 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();
}

Для целей этого примера, игнорируйте, может ли это быть плохим дизайном для пользовательского элемента управления, передающего запись & текстовый текст.

Вот проблемы, которые я вижу:

  • Возможно, страница установила собственные параметры загрузки перед передачей записи в пользовательский элемент управления, что привело к неэффективному запросу.
  • На странице могут отсутствовать новые настройки, заданные пользовательским элементом управления, когда она продолжает использовать саму запись автомобиля.

Итак, у меня два вопроса:

  1. Каков наилучший способ «очистить» LoadOptions? Просто установите DataContext.LoadOptions = new DataLoadOptions(); или = null;?
  2. Есть ли способ установить временные LoadOptions, которые влияют только на определенную операцию, прежде чем вернуться к тому, что было раньше?

Заранее спасибо.

1 Ответ

1 голос
/ 22 сентября 2010

параметры загрузки данных всегда должны быть установлены до выполнения первого запроса.после выполнения запроса вы ничего не можете с ними сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...