Я использую System.Linq.Dynamic.Core;
и следующий метод расширения для динамического доступа к DbSet по имени и генерации запросов из строк.
Это метод расширения:
namespace Microsoft.EntityFrameworkCore
{
public static partial class CustomExtensions
{
public static IQueryable Query(this DbContext context, string entityName) =>
context.Query(context.Model.FindEntityType(entityName).ClrType);
public static IQueryable Query(this DbContext context, Type entityType) =>
(IQueryable)((IDbSetCache)context).GetOrAddSet(context.GetDependencies().SetSource, entityType);
}
}
Вот как я получаю доступ к DbSet:
IQueryable<T> dbSet = (IQueryable<T>)_db.Query(entityName);
Это отлично работает, я могу построить запрос, а затем создать список, но ни один из вложенных объектов не загружается. Кажется, IQueryable
не имеет определения для Include()
. Я вижу метод включения, если я напрямую обращаюсь к контексту БД обычным способом, но не использую этот динамический метод.
Как включить вложенные объекты с помощью динамического метода?