Эта проблема вызвана сочетанием использования пакета System.Linq.Async
и класса DbSet<TEntity>
, который реализует как IQueryable<TEntity>
, так и IAsyncEnumerable<TEntity>
.
. В этой ситуации импорт пространств имен System.Linq
и Microsoft.EntityFrameworkCore
приводит к определению конфликтующих методов расширения. К сожалению, избежать импорта одного из них, как правило, практически невозможно.
Такое поведение присутствует начиная с EF.Core 3.0 и обсуждается в этой проблеме .
Как В результате EF.Core 3.1 добавляет две вспомогательные функции AsAsyncEnumerable()
и AsQueryable()
, которые явно возвращают IAsyncEnumerable<TEntity>
соответственно IQueryable<TEntity>
.
Таким образом, пример кода исправляется путем вызова требуемой функции устранения неоднозначности:
await _dbContext.Users.AsQueryable().AnyAsync(u => u.Name == name);
или
await _dbContext.Users.AsAsyncEnumerable().AnyAsync(u => u.Name == name);