Я получаю сообщение об ошибке, которое мне не удается обойти при вызове API. Выдается ошибка:
System.ArgumentException: Expression of type 'System.Threading.Tasks.Task`1[System.Linq.IQueryable`1[System.String]]' cannot be used for return type 'System.Threading.Tasks.Task`1[System.Collections.Generic.IEnumerable`1[System.String]]'
at System.Linq.Expressions.Expression.ValidateLambdaArgs(Type delegateType, Expression& body, ReadOnlyCollection`1 parameters, String paramName)
at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable`1 parameters)
at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, Boolean tailCall, IEnumerable`1 parameters)
at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, ParameterExpression[] parameters)
at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
Когда вызов API передается с использованием идентификатора организации, он должен захватывать все местоположения, связанные с этим идентификатором. Вот когда эта ошибка поднята. Я не могу на всю жизнь найти то, что вызывает это. Подробности вызова следующие:
Контроллер:
[HttpPost("{id}/getorganizationlocations")]
public async Task<IActionResult> GetOrganizationLoc(int id)
{
var organizationNames = await _repo.GetOrganizationNameById(id);
return Ok(organizationNames);
}
Репозиторий:
public async Task<IEnumerable<string>> GetOrganizationNameById(int LocationId)
{
var OrganizationName = await _context.Locations
.Include(l => l.Owners)
.Where(o => o.Id == LocationId)
.Select(l => l.Owners.Select(on => on.Owner.OrganizationName))
.FirstOrDefaultAsync();
return OrganizationName;
}
Интерфейс репозитория:
public interface IOrganizationRepository
{
void Add<T>(T entity) where T: class;
void Delete<T>(T entity) where T: class;
Task<bool> SaveAll();
Task<IEnumerable<Organizations>> GetOrganizations();
Task<Organizations> GetOrganization(int id);
Task<OrgToLoc> GetOwnees(int OrganizationId, int LocationId);
// Begin Help on many to many
Task<IEnumerable<string>> GetOrganizationNameById(int LocationId);
// End help many to many
}
Любой идеи о том, что может быть причиной этого?
При отладке запрос выполняется в контроллере, и, когда я выполняю его, возникает ошибка после того, как контроллер запрашивает данные из репозитория и возвращает данные в контроллер. Здесь зацикливается и выдает ошибку:
var organizationNames = await _repo.GetOrganizationNameById(id);
Есть идеи о том, что может быть причиной этого?