Сначала я использую шаблон универсального репозитория поверх кода Entity Framework. Все работало нормально, пока мне не нужно было включить больше объектов в запрос. Я должен включить одну сущность успешно, но теперь я не могу понять, как включить несколько сущностей. Проверьте, что у меня так далеко:
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 и передавал имя сущности (на самом деле свойство навигации) одновременно, чтобы агрегировать результаты запроса, но я беспокоюсь, что это может дублировать результаты запроса при каждом вызове ... Как вы думаете, что будет лучшим способом заставить это работать?
Заранее спасибо!
UPDATE:
Вот пример того, чего я пытаюсь достичь:
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]);
}