I am trying to make a FakeDbContext with a FakeDbSet for unit testing.
But I get the following error (see below). I am extending DbSet so normally IDbAsyncEnumerable should be implemented. And when I implement it, it says that it has no use.
Exception:
System.InvalidOperationException: The source IQueryable doesn't implement IDbAsyncEnumerable. Only sources that implement IDbAsyncEnumerable can be used for Entity Framework asynchronous operations. For more details see http://go.microsoft.com/fwlink/?LinkId=287068.
FakeDbSet class:
public abstract class FakeDbSet<TEntity> : DbSet<TEntity>, IEnumerable<TEntity>, IQueryable, IDbAsyncEnumerable<TEntity> where TEntity : Entity, new()
{
    #region Private Fields
    private readonly ObservableCollection<TEntity> _items;
    private readonly IQueryable _query;
    #endregion Private Fields
    protected FakeDbSet()
    {
        _items = new ObservableCollection<TEntity>();
        _query = _items.AsQueryable();
    }
    public Expression Expression { get { return _query.Expression; } }
    public Type ElementType { get { return _query.ElementType; } }
    public IQueryProvider Provider { get { return _query.Provider; } }
    public override TEntity Add(TEntity entity)
    {
        _items.Add(entity);
        return entity;
    }
    public override TEntity Remove(TEntity entity)
    {
        _items.Remove(entity);
        return entity;
    }
    public override TEntity Attach(TEntity entity)
    {
        switch (entity.ObjectState)
        {
            case ObjectState.Modified:
                _items.Remove(entity);
                _items.Add(entity);
                break;
            case ObjectState.Deleted:
                _items.Remove(entity);
                break;
            case ObjectState.Unchanged:
            case ObjectState.Added:
                _items.Add(entity);
                break;
            default:
                throw new ArgumentOutOfRangeException();
        }
        return entity;
    }
    public override TEntity Create() { return new TEntity(); }
    public override TDerivedEntity Create<TDerivedEntity>() { return Activator.CreateInstance<TDerivedEntity>(); }
    public override ObservableCollection<TEntity> Local { get { return _items; } }
    IEnumerator<TEntity> IEnumerable<TEntity>.GetEnumerator()
    {
        return _items.GetEnumerator();
    }
    Type IQueryable.ElementType
    {
        get { return _items.AsQueryable().ElementType; }
    }
    Expression IQueryable.Expression
    {
        get { return _items.AsQueryable().Expression; }
    }
    IQueryProvider IQueryable.Provider
    {
        get { return _items.AsQueryable().Provider; }
    }
Here is a gist with the code. In the last file in the gist, that is where the error happens. Gist code
 
     
     
     
     
     
     
     
     
     
     
    