Замок Виндзор - Linq to SQL Session для запроса и DataLoadOptions - PullRequest
0 голосов
/ 22 февраля 2012

Использование Castle Windsor для управления Linq to SQL DataContext с временем жизни в сети:

Component.For<MyDataContext>()
                    .ImplementedBy<MyDataContext>()
                    .LifestylePerWebRequest()

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

Настройка параметров загрузки не разрешена после того, как результаты были возвращены из запроса.

Единственный вариант, который я вижу, - это установить параметры вконструктор:

public SomeController(MyDataContext context)
{
_context = context;

var options = new DataLoadOptions();
            options.LoadWith<MyEntity>(x => x.Children);
            _context.LoadOptions = options;
}

Любые советы или рекомендации о том, как справиться с этой ситуацией, очень ценятся.

1 Ответ

0 голосов
/ 22 февраля 2012

L2S не позволяет изменять стратегию выборки после открытия контекста. Независимо от того, как вам придется обойти эту проблему. Ваше решение будет работать, однако еще одна вещь, которую вы можете сделать, это извлечь контекст и применить вашу энергичную загрузку в производном. Таким образом, вы можете внедрить уже настроенный экземпляр в ваш контроллер.

Вы также можете рассмотреть возможность использования другого инструмента ORM, который поддерживает изменение поведения загрузки на более позднем этапе (EF, OpenAccess, NHibernate). Это не должно быть слишком сложно конвертировать, если у вас маленькая модель.

...