我正在使用 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 的某处有一个映射。如果我在整个工作流程中遗漏了一些关键的东西,有人可以告诉我吗?提前致谢。