是否可以从DbQuery和IDbSet创建一个抽象类?我正在尝试为我的单元测试创建一个抽象层。
public abstract class BaseDbSet<T> : DbQuery<T>, IDbSet<T> where T : Entity
{
#region IDbSet<T> Members
public abstract T Add(T entity);
public abstract T Attach(T entity);
public abstract TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, T;
public abstract T Create();
public abstract T Find(params object[] keyValues);
public abstract ObservableCollection<T> Local { get; }
public abstract T Remove(T entity);
#endregion
}
我收到以下错误:
错误1类型'System.Data.Entity.Infrastructure.DbQuery' 没有构造函数 定义@path \ BaseDbSet.cs
如果我尝试添加构造函数,我会得到:
错误1类型'System.Data.Entity.Infrastructure.DbQuery' 没有构造函数 定义@path \ BaseDbSet.cs
答案 0 :(得分:2)
这是因为构造函数被声明为internal。因此,您无法访问它们。
单元测试EF代码是一个有缺陷的概念。检查this answer。你在不必要的抽象上浪费了宝贵的时间。