WPF MVVM 存储库模式实现

时间:2021-04-14 11:40:14

标签: wpf mvvm entity-framework-core repository-pattern

我正在使用 EF Core 在 WPF MVVM 中开发一个应用程序,并将其作为当前仅关注 2 个表的 POC。有两个单独的视图(用于 2 个表) - 使用 DataGrid 和导航视图,DataGrid 加载来自该特定表的数据。到目前为止一切顺利。

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

(2) 然后在网上阅读了几本书后,我创建了几个接口(IEntity 和 IRepository)

public interface IEntity
{
    int Id { get; }
}

public interface IRepository<TEntity> where TEntity:IEntity
{
    IEnumerable<TEntity> 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();
    }
}

到底什么是 TEntity,我应该如何在我的 ViewModel 中使用这个 Repository 类?我为此搜索了很多,据我所知,仅仅为数据库搭建脚手架是行不通的 - 必须在 dbContext 和 dbSet 的某处有一个映射。如果我在整个工作流程中遗漏了一些关键的东西,有人可以告诉我吗?提前致谢。

0 个答案:

没有答案