Странная ошибка Linq to Sql - получение слишком большого количества полей - PullRequest
1 голос
/ 27 октября 2009

У меня есть довольно простое утверждение Linq to Sql, которое (на поверхности) работает нормально. Когда я проверяю SQL-код, который он генерирует, он пытается получить все полей таблицы вместо полей, которые я просто запрашиваю. Это нормальная практика?

вот код psedo для запроса linq to sql: -

var result = (from q in db.Foos
              where blah blah blah
              orderby more blah
              select new ResultThingy
              {
                  A = q.A, // int
                  B = q.B, // string
                  C = q.Bar.A // int
                  D = q.Bar.B // string
              })
              .Take(5)
              .ToList();

Теперь он получает все значения из таблицы Bar ... (и нескольких других полей).

Это нормальная практика? Заметьте, как каждое свойство в классе ResultThingy является простым типом?

Хммм ... мысли? Я действительно запутался по этому поводу.

1 Ответ

0 голосов
/ 27 октября 2009

Это нормально (после тщательного изучения вашего кода).

Поскольку вы используете тип .NET (не сущность), Linq2SQL должен извлечь все до последнего выбора.

Чтобы обойти это, используйте вместо этого анонимный объект.

IOW: select new { q.A, q.B, C = q.Bar.A, D = q.Bar.B }

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