После переноса проекта из. NET Core 2.2 в версию 3.1 я получил ошибку с IAsyncEnumerator & IAsyncQueryProvider:
- Тип 'IAsyncEnumerable' существует в обоих файлах System.Interactive.Asyn *. 1019 *, версия = 3.0.3000.0, культура = нейтральная, PublicKeyToken = 94bc3704cddfc263 'и' System.Runtime, версия = 4.2.2.0
- 'TestAsyncQueryProvider' не реализует элемент интерфейса 'IAsyncQueryProvider.ExecuteAsyn c ( Выражение). «TestAsyncQueryProvider.ExecuteAsyn c (выражение)» не может реализовать «IAsyncQueryProvider.ExecuteAsyn c (выражение)», поскольку у него нет соответствующего возвращаемого типа «IAsyncEnumerable».
Мне удалось выполнить Решите первую проблему, связанную с IAsyncEnumerable, с помощью этого исправления, которое я обнаружил в Google:
<Target Name="ChangeAliasesOfReactiveExtensions" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'System.Interactive.Async'">
<Aliases>ix</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
Однако я не могу найти решения для второй проблемы.
Пример кода, в котором я получаю ошибка:
internal class TestAsyncQueryProvider<TEntity> : IAsyncQueryProvider
{
private readonly IQueryProvider _inner;
internal TestAsyncQueryProvider(IQueryProvider inner)
{
_inner = inner;
}
public IQueryable CreateQuery(Expression expression)
{
return new TestAsyncEnumerable<TEntity>(expression);
}
public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
{
return new TestAsyncEnumerable<TElement>(expression);
}
public object Execute(Expression expression)
{
return _inner.Execute(expression);
}
public TResult Execute<TResult>(Expression expression)
{
return _inner.Execute<TResult>(expression);
}
public IAsyncEnumerable<TResult> ExecuteAsync<TResult>(Expression expression)
{
return new TestAsyncEnumerable<TResult>(expression);
}
public Task<TResult> ExecuteAsync<TResult>(Expression expression, CancellationToken cancellationToken)
{
return Task.FromResult(Execute<TResult>(expression));
}
}
Интересно, кто-нибудь сталкивался с подобными проблемами и сумел их решить. Также стоит упомянуть, что я все еще использую EF Core v2.x и еще не перенес его в версию 3.