【发布时间】:2016-12-11 21:07:05
【问题描述】:
对不起,我是实体框架的新手..
我想创建一个 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 中工作..
【问题讨论】:
-
你想用这个实现做什么?
-
用于单元测试..
-
我认为最好创建一个继承自 List
或 Collection 的 DbSet,您还将处理生成值的行为,例如 SqlSever 中的 Identity -
我无法清楚地了解您。如果我只是继承 List
我怎么能覆盖 Save , Add 等。你能用示例解释一下吗..
标签: c# asp.net entity-framework entity-framework-core