我有一个通用存储库类,请参见下文,用于执行常见的数据访问功能,即Add,GetByID等。
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
internal GolfEntities context;
internal DbSet<TEntity> dbSet;
public GenericRepository(GolfEntities context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public TEntity GetByID(object id)
{
return dbSet.Find(id);
}
我想创建另一个从该通用存储库类派生的存储库类,以便可以执行不属于该通用存储库类的其他功能,例如获得用户全名。
我创建了一个名为UserRepository的类,请参见下文,该类派生自通用存储库,但是,编译时始终出现错误:
Repository.GenericRepository
public class UserRepository : GenericRepository<User>, IUserRepository
{
internal GolfEntities _context;
public UserRepository() : base() { }
public UserRepository(GolfEntities context)
{
_context = context;
}
public string FullName()
{
return "Full Name: Test FullName";
}
}
有谁知道如何解决这一问题?
任何帮助将非常感激。
谢谢。
最佳答案
您应该从派生存储库中删除默认构造函数:
public UserRepository() : base() { }
由于您的基本存储库类没有无参数构造函数,因此调用
base()
没有任何意义。同样,您不需要在派生构造函数中重复与基础构造函数相同的逻辑。您只能调用它:public class UserRepository : GenericRepository<User>, IUserRepository
{
public UserRepository(GolfEntities context): base(context)
{
}
public string FullName()
{
return "Full Name: Test FullName";
}
}
关于c# - 从通用存储库派生的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9601057/