Asp.net Core3.0-------------------数据仓储的封装和使用。

定义一个仓储类:IRepository

/// /// EFCore数据操作基本仓储接口 /// /// public interface IRepository where TModel: class { /// /// 新增 /// /// void Add(TModel TModelModel); /// /// 删除 /// /// void Delete(object Id); /// /// 修改 /// /// void Update(TModel TModelModel); /// /// 根据主键查询单个 /// /// 【Asp.net Core3.0-------------------数据仓储的封装和使用。】 /// TModel GetSingle(object Id); /// /// 返回列表 /// /// IEnumerable GetList(); /// /// 获取数据库上下文 /// DbContext dbContext { get; }/// /// 获取该实体类型 /// DbSet Entities { get; } }

再定义一个仓储类的实现:
public class EfRepository : IRepository where TModel : class { private readonly CoreContext _coreContext; public EfRepository(CoreContext coreContext) { this._coreContext = coreContext; } public DbContext dbContext { get { return _coreContext; } }public DbSet Entities { get { return _coreContext.Set(); } }public void Add(TModel model) { _coreContext.Add(model); _coreContext.SaveChanges(); }public void Delete(object Id) { var entity = GetSingle(Id); if (entity != null) { _coreContext.Remove(entity); _coreContext.SaveChanges(); }}public IEnumerable GetList() { return _coreContext.Set().ToList(); }public TModel GetSingle(object Id) { return _coreContext.Set().Find(Id); }public void Update(TModel model) { _coreContext.Update(model); }}

Ps:CoreContext是使用EF框架自动生成的数据库上下文,有疑惑移步:
https://note.youdao.com/ynoteshare1/index.html?id=e1a48103e47ae5ba4b76d0ce7b277743&type=note
使用的时候再Starup中注入:
services.AddScoped(typeof(IRepository<>), typeof(EfRepository<>));

Asp.net Core3.0-------------------数据仓储的封装和使用。
文章图片


    推荐阅读