Я использую 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? Какой-то «проекционный» или расширенный «выборочный» метод?