存储库错误:存储库基础不包含带0参数的构造函数

时间:2015-09-12 20:54:56

标签: c# asp.net entity-framework

我正在处理一个我不知道如何解决的问题。我正在使用ASP.NET Boilerplate,并一直遵循本指南及其来源T:Using-AngularJs-ASP-NET-MVC-Web-API-and-EntityFram

我在构建第一个存储库时遇到问题。它给了我以下错误:错误1

  

' Test.EntityFramework.Repositories.TestRepositoryBase'   不包含带0参数的构造函数

这是存储库:

public class UserInfoRepository : TestRepositoryBase<UserInfo, Guid>, IUserInfoRepository
{
}

虽然基数:

 public abstract class TestRepositoryBase<TEntity, TPrimaryKey> : EfRepositoryBase<TestDbContext, TEntity, TPrimaryKey>
    where TEntity : class, IEntity<TPrimaryKey>
{
    protected TestRepositoryBase(IDbContextProvider<TestDbContext> dbContextProvider)
        : base(dbContextProvider)
    {

    }

    //add common methods for all repositories
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

基类总是强制将构造函数的签名赋予派生类。如您所知,应该在派生类实例创建时调用基类构造函数。如果您定义默认(无参数)构造函数并尝试new它基类中只有一个构造函数,它接受1个参数并且应该调用它,但是没有参数可以传入。基类是非默认的构造函数应该在派生类构造函数实现上显式调用,以提供传递参数的能力。要修复这种情况,你应该显式调用基类构造函数并传入参数。

public UserInfoRepository (IDbContextProvider<TestDbContext> dbContextProvider)
      : base(dbContextProvider)
{}