WPF MVVM存储库模式实现

WPF MVVM存储库模式实现,wpf,mvvm,entity-framework-core,repository-pattern,Wpf,Mvvm,Entity Framework Core,Repository Pattern,我正在使用EF Core在WPF MVVM中开发一个应用程序,作为POC,目前只关注2个表。有两个独立的视图(针对2个表)-使用DataGrid和导航视图时,DataGrid将加载来自该特定表的数据。到目前为止还不错 现在,我正在实现一个存储库模式,这样基本的CRUD操作就可以在这两个表中通用。目前,我在存储库中只有全选功能。以下是我为存储库模式遵循的工作流程 (1) 我使用数据库优先的方法,从数据库中构建这两个表。它给了我3个类(2个用于表,1个用于数据库上下文) (2) 然后在网上阅读了几本

我正在使用EF Core在WPF MVVM中开发一个应用程序,作为POC,目前只关注2个表。有两个独立的视图(针对2个表)-使用DataGrid和导航视图时,DataGrid将加载来自该特定表的数据。到目前为止还不错

现在,我正在实现一个存储库模式,这样基本的CRUD操作就可以在这两个表中通用。目前,我在存储库中只有全选功能。以下是我为存储库模式遵循的工作流程 (1) 我使用数据库优先的方法,从数据库中构建这两个表。它给了我3个类(2个用于表,1个用于数据库上下文)

(2) 然后在网上阅读了几本书之后,我创建了两个界面(IEntity和IRepository)

公共接口的可扩展性
{
int Id{get;}
}
公共接口i假设,其中tenty:ienty
{
IEnumerable List();
}
这是Repository类

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IEntity
{
    private readonly DbContext _context;
    private readonly DbSet<TEntity> _dbSet;


    public Repository()
    {

    }

    public Repository(DbContext context)
    {
        this._context = context;
        this._dbSet = context.Set<TEntity>();
    }

    public IEnumerable<TEntity> List()
    {
        return _dbSet.ToList();
    }
}
公共类存储库:i存储库,其中tenty:class,ienty
{
私有只读DbContext\u context;
私有只读数据库集_DbSet;
公共存储库()
{
}
公共存储库(DbContext上下文)
{
这._context=context;
这个._dbSet=context.Set();
}
公共IEnumerable列表()
{
return_dbSet.ToList();
}
}

TEntity到底是什么?我应该如何在ViewModel中使用这个存储库类?我对此进行了大量搜索,据我所知,仅仅构建数据库是行不通的——必须在dbContext和dbSet的某个地方进行映射。如果我在整个工作流程中遗漏了一些关键的东西,有人能告诉我吗?提前感谢。

删除此附加抽象
DbSet
已经是存储库,
DbContext
已经是UoW。还请阅读其他文章:
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IEntity
{
    private readonly DbContext _context;
    private readonly DbSet<TEntity> _dbSet;


    public Repository()
    {

    }

    public Repository(DbContext context)
    {
        this._context = context;
        this._dbSet = context.Set<TEntity>();
    }

    public IEnumerable<TEntity> List()
    {
        return _dbSet.ToList();
    }
}