Здравствуйте, IT, Вы писали:
C>>C>>db.Pays.Where(pay => pay.Amount > 100).WithAssociation(bill_associatiation).WithAssociation(customer_associatiation);
C>>
IT>Мне больше нравится вариант EF с Include. Но вопрос не в этом. Вопрос в том, как подгружать ассоциации. Есть несколько вариантов:
В EF Include принимает строку (вроде). Хотелось, чтобы была типизация, т.е. в имени ассоциации нельзя было ошибиться.
Мда, хорошего универсального решения не просматривается.
Можно реализовать все три (начать с самого простого или самого универсального) и назвать методы
IncludeWithManyQueries(...)
IncludeWithBatchQueries(...)
IncludeWithHeavyQuery(...)
IncludeWithWideResult(...)
И пусть пользователь сам принимает решение, как ему получать данные из БД.
Хотя я не уверен — главный аргумент против третьего, со вторым запросом для связанных таблиц, это тяжесть получаемого запроса. Окажется ли это хуже, чем первые два варианта
на тех же данных, хоть в каком-то случае? Не настолько хорошо разбираюсь в БД, чтобы судить об этом.
Потом можно будет создать Include, который реализует какую-то стратегию выборки или оставить все как есть.