我正在处理一个我不知道如何解决的问题。我正在使用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
}
有什么建议吗?
答案 0 :(得分:1)
基类总是强制将构造函数的签名赋予派生类。如您所知,应该在派生类实例创建时调用基类构造函数。如果您定义默认(无参数)构造函数并尝试new
它基类中只有一个构造函数,它接受1个参数并且应该调用它,但是没有参数可以传入。基类是非默认的构造函数应该在派生类构造函数实现上显式调用,以提供传递参数的能力。要修复这种情况,你应该显式调用基类构造函数并传入参数。
public UserInfoRepository (IDbContextProvider<TestDbContext> dbContextProvider)
: base(dbContextProvider)
{}