tco*_*ode 1 c# repository derived-class repository-pattern
我有一个Generic Repository类,见下文,用于执行常见的数据访问功能,即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);
}
Run Code Online (Sandbox Code Playgroud)
我想创建另一个从这个Generic Repository类派生的Repository类,这样我就可以执行其他不属于Generic Repository类的函数,例如,获取用户的全名.
我创建了一个名为UserRepository的类,见下文,它来自Generic Repository,但是,我在编译时遇到错误:
Repository.GenericRepository <User>不包含带0个参数的构造函数
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";
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这一问题?
任何帮助将非常感激.
谢谢.
您应该从派生的存储库中删除默认构造函数:
public UserRepository() : base() { }
Run Code Online (Sandbox Code Playgroud)
由于您的基础存储库类没有无参数构造函数调用base()没有意义.此外,您不需要在派生构造函数中重复与基础构造函数中相同的逻辑.你只能调用它:
public class UserRepository : GenericRepository<User>, IUserRepository
{
public UserRepository(GolfEntities context): base(context)
{
}
public string FullName()
{
return "Full Name: Test FullName";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1973 次 |
| 最近记录: |