EF, включая другие сущности (шаблон общего репозитория)

Я использую шаблон Generic Repository поверх Entity Framework Code First. Все работало нормально, пока мне не потребовалось включить больше объектов в запрос. Мне удалось успешно включить одну сущность, но теперь я не могу понять, как включить несколько сущностей. Посмотрите, что у меня есть на данный момент:

public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName);
}

public IList<TEntity> GetQueryWithInclude<TEntity>(string toInclude) where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName).Include(toInclude).ToList();
}

private string GetEntityName<TEntity>() where TEntity : class
{
    return string.Format("{0}.{1}", _objectContext.DefaultContainerName, _pluralizer.Pluralize(typeof(TEntity).Name));
}

То, что я пытался сделать, но не сработало, - это передать массив строк в функцию, а затем попытаться «добавить» включения поверх запроса. Мне было интересно, что, если бы я вызвал GetQueryWithInclude и передал имя объекта (фактически свойство навигации) за раз, чтобы агрегировать результаты запроса, но я беспокоюсь, что это может дублировать результаты запроса при каждом вызове ... Как вы думаете, как лучше всего заставить это работать?

Заранее спасибо!

ОБНОВЛЕНИЕ:

Вот пример того, чего я пытаюсь достичь:

public IQueryable GetQueryWithIncludes(string[] otherEntities)
{
    var entityName = GetEntityName<TEntity>();
    //now loop over the otherEntities array 
    //and append Include extensions to the query
    //so inside the loop, something like: 
    _objectContext.GetQuery<TEntity>(entityName).Include(otherEntities[index]);
}
67
задан Ladislav Mrnka 21 March 2011 в 22:41
поделиться