Ограничение полей в операторе Select, сгенерированном Linq, в замок ActiveRecord - PullRequest
2 голосов
/ 19 июля 2010

Я использую ActiveRecord и LinqToActiveRecord для запроса моей базы данных. Проблема в том, что сгенерированный оператор SQL из моего выражения LINQ всегда пытается выбрать все возможные поля, включая объединенные таблицы, когда это не нужно. Например, у меня есть эти таблицы базы данных:

Table: MasterTable
Id (int)
ChildId (int) <- references a record in the Child table

Table: ChildTable
Id (int)
ChildName (varchar)

Теперь я хочу запросить все основные записи, в которых указанная дочерняя запись содержит ChildName "Tijn":

var myList = (from master in MasterTable.Queryable
              where master.Child.ChildName == "Tijn"
              select master).ToList(); 

Сгенерированный оператор SQL пытается выбрать не только все мастер-поля, но и дочерние поля, к которым он присоединен! Когда я пытаюсь сделать то же самое, используя HQL:

select master from MasterTable master where master.Child.ChildName = 'Tijn'

сгенерированный оператор SQL включает только основные поля, как я и хотел.

Итак, чтобы быть кратким: как я могу «ограничить» / «ограничить» таблицы, какие поля выбраны в LINQtoActiveRecord / LINQtoNHibernate? Какой-то «проекционный» или расширенный «выборочный» метод?

...