Pull to refresh

Comments 9

А не рассматривали вариант представлений (View)? Не проще ли их интегрировать в ORM?

Таблицы или представления — нет разницы для использования с ORM, объема трафика, цены запросы и пр. Разве что, использовать хранимые (материализованные) view.

Вам надо было попробовать linq2db
Там и не такое можно сгенерировать. Практически любой полет фантазии реализуем. EF Core, скорее всего не выпустит вас за свои рамки, а они очеь строгие.

Конечно, EF жесткий.
В статье специально рассмотрены только два самых популярных ORM на .NET. А для боевого проекта при выборе технологии сыграют роль не только гибкость, но и множество факторов, в том числе распространенность, размер комьюнити. https://goo.gl/2LP128

Так расширяйте это комюнити, а не двигайтесть за толпой ;)
Я как один из разработчиков linq2db, скажу что у вас не проблема, а проблемка.
Ассоциации любой сложности, ремаппинг полей на лету и гибкая раширяемость.
Огромное количество юнит тестов гарантируют что все это будет работать и через 10 лет.
А по скорости… перед нами только ручной маппер.

Не ставлю под сомнение гибкость вашего фреймворка :)


Так расширяйте это комюнити, а не двигайтесть за толпой ;)
Ну это лозунг. Цель проекта как правило не в этом. Архитектурные решения, в том числе выбор технологий — часто связаны с рисками и/или компромиссами. Требования в боевых проектах разнятся и, быть может, linq2db в последующих проектах попадет в шорт-лист при выборе.

Огромное количество юнит тестов гарантируют что все это будет работать и через 10 лет.
Огромное количество тестов, увы, не гарантирует, что фреймворк будет поддерживаться и развиваться даже в течение ближайших трех лет.
Да и не думаю ;)
Но похоже часто нужны шашечки вместо того чтобы ехать.
SQL-запроc с учетом поиска подходящих локализаций уже более громоздкий
Соединения с таблицей t_product_localizable можно заменить на подзапросы, но это принципиально ничего не меняет.
А нельзя на 2 запроса разбить? И собрать их в коде или через JOIN с GROUP BY?

SELECT id_product, name
FROM t_product_localizable
WHERE locale IN ('ru', 'en') AND name LIKE @p1

SELECT id_product, code
FROM t_product
WHERE id_product IN (@p1)

Фактически такой подход — это ленивая загрузка многоязычного атрибута. Два раундтрипа для единичной сущности обычно дороже, чем JOIN или подзапросы. Но реализуемость для этого варианта не проверял.

Sign up to leave a comment.