对不起,我是 Entity Framework 的新手..

我想创建一个 TestDbSet,它在 EF 7 中提供 DbSet 的内存实现。

public class TestDbSet<TEntity> : DbSet<TEntity>, IQueryable, IEnumerable<TEntity>, IDbAsyncEnumerable<TEntity>
        where TEntity : class
    {
        ObservableCollection<TEntity> _data;
        IQueryable _query;


    public TestDbSet()
    {
        _data = new ObservableCollection<TEntity>();
        _query = _data.AsQueryable();
    }

    public override TEntity Add(TEntity item)
    {
        _data.Add(item);
        return item;
    }

    public override TEntity Remove(TEntity item)
    {
        _data.Remove(item);
        return item;
        }
 }

我在 Add 方法中遇到错误,返回类型必须是 EntityEntry<T> 才能匹配 Overriden Dbset 成员。

我试图更改方法签名,但我不确定如何将项目作为 EntityEntry 返回
 public override EntityEntry<T> Add(T item)
        {
           _data.Add(item);
            return  item;
        }

我找不到类似的问题。你能指导我如何在 EF 7 中实现.. 我知道它会在 EF 6 中工作..

最佳答案

对于没有真实数据库的测试,您可以使用 use Microsoft.EntityFrameworkCore.InMemory

关于c# - Entity Framework 7 创建 DbSet 的内存实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41091155/

10-13 07:47