LINQ-2-SQL расширение связей на ToList () - PullRequest
1 голос
/ 04 марта 2012

У меня есть класс DataLayer (LINQ2SQL, а не платформа сущностей), который возвращает строки из базы данных следующим образом:

    public ReadOnlyCollection<UserCars> Cars
    {
        get
        {
            using (var context = new TransportopiaDataContext())
            {
                var result = (from car in context.UserCars
                              where car.UserId == UserId
                              select car);
                return result.ToList().AsReadOnly();
            }
        }
    }

Теперь, как вы знаете, вы должны выполнить ToList (), потому что текстовый текствыходит из области видимости, когда вы покидаете предложение using ().Проблема в том, что существуют отношения между внешними ключами;пока контекст находится в области видимости, вы могли бы сделать:

string foo = car.Manufacturer.Name;

Но выполнение этого после удаления контекста приводит к ошибке.Итак, мой вопрос:

«Есть ли какой-нибудь способ сделать ToList () таким образом, чтобы отношения внешних ключей также были расширены?»

1 Ответ

3 голосов
/ 04 марта 2012

Вы можете указать это в DataLoadOptions перед выполнением запроса:

using (var context = new TransportopiaDataContext())
{
    DataLoadOptions options = new DataLoadOptions();
    options.LoadWith<UserCar>(x => x.Manufacturer);
    context.LoadOptions = options;
    var result = (from car in context.UserCars
                    where car.UserId == UserId
                    select car);
    return result.ToList().AsReadOnly();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...