如何从EntityFramework上的DbQuery <t>和IDbSet <t>创建一个抽象类</t> </t>

时间:2012-02-12 01:33:21

标签: entity-framework

是否可以从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

1 个答案:

答案 0 :(得分:2)

这是因为构造函数被声明为internal。因此,您无法访问它们。

单元测试EF代码是一个有缺陷的概念。检查this answer。你在不必要的抽象上浪费了宝贵的时间。