抱歉,我不熟悉Entity Framework。
我想创建一个TestDbSet,在EF7中提供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>
才能匹配重写的Dbset成员。
我尝试更改方法签名,但我不确定如何将项作为EntityEntry返回
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return item;
}
我找不到类似的问题。你能指导我如何在EF7中实现吗?我知道它会在EF6中工作。
发布于 2016-12-12 06:33:27
对于没有real DB的测试,您可以使用use Microsoft.EntityFrameworkCore.InMemory包
发布于 2018-06-07 06:45:01
对不起,我知道这是一个很老的帖子。但我想如果这有帮助的话。我设法通过返回null覆盖了EF Core的Add方法。因为我们只是列表中的数据项,所以除非您需要ChangeTracking对象,否则返回null并不重要。
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return null;
}
发布于 2019-01-19 07:22:25
我用下面的代码解决了这个问题
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return item as EntityEntry<T>;
}
https://stackoverflow.com/questions/41091155
复制相似问题