Сложный запрос направляющих - объединения? подвыбрать? могу я все еще использовал named_scope?

Проблема в ссылке «EntityFramework.SqlServer».

В моем проекте, когда я добавил Entity Framework 6.0.1 с использованием NuGet на уровне доступа к данным, я получил ту же ошибку на стороне клиента, поскольку на стороне клиента такой ссылки нет.

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

6
задан stephan.com 20 June 2009 в 06:05
поделиться

3 ответа

Что ж, у меня были отличные результаты с named_scope такими:

named_scope :has_cat_older_than   lambda { |a| { :conditions => ["men.id in ( select man_id from wives where wives.id in ( select wife_id from cats where age > ? ) )", a] } }

и

named_scope :has_young_wife_named lambda { |n| { :conditions => ["men.id in ( select man_id from wives where name = ? and age < 30)", n] } }

Теперь я могу успешно делать

Member.has_cat_older_than(6).has_young_wife_named('Miriam').has_young_wife_named('Vashti')

и получать то, что я ' м ожидая. Эти области не требуют использования объединений, и, похоже, они хорошо работают с другими стилизованными объединениями.

w00t!

Комментарий к вопросу о том, является ли это эффективным способом сделать это, или если существует более "рельсовый" путь. Может быть полезен способ включить область видимости из другой модели в качестве фрагмента подзапроса sql ...

2
ответ дан 17 December 2019 в 07:08
поделиться

Вы использовали наиболее родное решение для Rails. Прямой SQL будет иметь такую ​​же производительность, поэтому нет причин его использовать.

0
ответ дан 17 December 2019 в 07:08
поделиться

Я использовал construct_finder_sql для выполнения частичного выбора одного named_scope в другом. Это может быть не для всех, но его использование позволяет нам ОСУШИТЬ пару named_scopes, которые мы использовали для отчетов.

Man.has_cat_older_than(6).send(:construct_finder_sql,{})

Попробуйте это в своем скрипте / консоли.

2
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: