关于通用存储库和dbContext的困惑

时间:2018-07-16 14:24:20

标签: model-view-controller repository-pattern

我是MVC的新手,我有一个项目用过的存储库和工作单元,在项目存储库中写成:

private DbContext context;
    private DbSet<TEntity> dbQueryable;

    public GenericEFRepository(DbContext context) : base(context.Set<TEntity>())
    {
        this.context = context;
        this.dbQueryable = (DbSet<TEntity>)this.Queryable;
    }

谁能解释它的作用并告诉我:base是什么?

1 个答案:

答案 0 :(得分:1)

从代码中可以看出您正在使用实体框架。前两行只是EF的对象。 GenericEFRepository是通用方法,我认为它必须是通用存储库的一部分。

使用: base(context.Set<TEntity>()代码,您正在调用基类的构造函数。查看您已指定基类的GenericEFRepository类的定义。

最后,方法主体返回IQueryable,您可以在调用代码中使用它。


但是,这一切都需要改进。通用存储库被视为反模式。我建议您在实施存储库模式之前先了解它。返回IQueryable破坏了存储库的基本用途。

请参考以下答案以获取更多信息:

https://stackoverflow.com/a/49974458/5779732
https://stackoverflow.com/a/49850950/5779732