c# - 从通用存储库派生的类

标签 c# repository repository-pattern derived-class

我有一个通用存储库类,请参见下文,用于执行常见的数据访问功能,即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 不包含带有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";
    }


}


有谁知道如何解决这一问题?

任何帮助将非常感激。

谢谢。

最佳答案

您应该从派生存储库中删除默认构造函数:

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/

相关文章:

c# - 哪种数据库类型更适合高性能目的?

android - 在没有jar的Eclipse中导入库

maven - 清除 Maven 本地存储库并保持最新?

c# - 具有通用存储库的 DbContextScope

domain-driven-design - 领域驱动设计 - 如何处理部分聚合根的更新

c# - 如何构建解决方案以允许存储库的多个数据源

c# - 使用 EntityFramework.Extended 的简单批量删除会抛出语法错误

c# - 如何将 C# 变量的值传递给 javascript?

c# - 控件。添加评论?

git - 忽略来自 Git 存储库及其克隆的版本控制文件